开发者问题收集

定义函数时出现 ReferenceError undefined

2016-08-06
560

我的 app.component.ts 文件中定义了一个函数,其定义如下

export class AppComponent {

    ....

    onRowSelected(record:any) {
       this.selectedRecord = record;
    }

   ....
}

当选择表行时,我将 app.component.html 文件中的函数用作回调函数

<tr *ngFor="let record of records">
    <div onclick="onRowSelected(record)">
        <!-- Create a checkbox for each row -->
        <td>
            <md-checkbox></md-checkbox>
        </td>
        <!-- For each entry in the config, create a cell -->
        <td *ngFor="let column of config.columns" 
         ....
        </td>
    </div>
</tr>

我不明白为什么我会得到

VM11199 Uncaught ReferenceError: onRowSelected is not defined

而该函数在我的组件中定义得非常清楚。有什么见解吗?

1个回答

onclick 是一个“原始”(常规)JavaScript 绑定。​​执行的函数将是 window.onRowSelected 。由于它不存在,因此您会收到错误。

在 Angular2 中绑定 JavaScript 事件的正确方法是 (nameOfTheEvent)="codeToBeExecuted" 。这样, @Component 处的函数将可用。

这样,由于您尝试绑定单击事件,对于 Angular,正确的方法是 (click)

因此:

<div onclick="onRowSelected(record)">

应该变成:

<div (click)="onRowSelected(record)">
acdcjunior
2016-08-06