在定义的函数上未定义ReferenceError

时间:2016-08-06 19:23:11

标签: typescript angular

我的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 个答案:

答案 0 :(得分:3)

onclick是&#34;香草&#34; (常规)JavaScript绑定。执行的功能为window.onRowSelected。由于它不存在,你会收到错误。

在Angular2中绑定JavaScript事件的正确方法是(nameOfTheEvent)="codeToBeExecuted"。这样,@Component的功能就可用了。

这样,由于您尝试绑定click事件,对于angular,正确的是(click)

所以这个:

<div onclick="onRowSelected(record)">

应该成为:

<div (click)="onRowSelected(record)">