如何在没有ngClick的情况下将值作为参数传递给Angular2中的onclick内的函数调用?

时间:2017-01-30 19:11:41

标签: javascript angular

Angular2:我试图将*ngFor循环中的值作为参数传递给(click)属性上的函数调用(因为出于安全原因,不允许在onclick上调用函数)<我的锚标记上的/ em>事件。

模板代码:

<div *ngFor='let artist of artists'>
   <a (click)="alert({{artist.artist_id}})" href="#">{{artist.artist_name}}</a>
</div>

编译时间错误:

Got interpolation ({{}}) where expression was expected in [alert({{artist.artist_id}})]

问题:

如何将艺术家的值传递给(click)上的函数调用?

任何/所有帮助表示赞赏! :)

2 个答案:

答案 0 :(得分:9)

在您的情况下,您不需要双花括号,因为您将变量传递给事件绑定单击属性中的函数,因此您可以删除这些大括号,它将按预期工作:

<div *ngFor='let artist of artists'>
   <a (click)="alert(artist.artist_id)" href="#">{{artist.artist_name}}</a>
</div>

根据relevant documentation,您只需在HTML元素标记之间和属性赋值中插入值时使用插值(不要与事件/属性绑定混淆)。

例如,您需要对此直接src属性赋值使用插值,否则该值将被解释为字符串:

<img src="{{pathUrl}}" />

但是,如果您使用property binding(即[src]而不是src),则会将其视为变量,并且不需要插值:

<img [src]="pathUrl" />

同样适用于event binding,就像你的情况一样。

换句话说,正如Günter in the comment above所述,您永远不需要使用事件/属性绑定(即() / [] / [()]),变量插值,(即双花括号,{{}})。

答案 1 :(得分:1)

只需删除插值并调用alert(artist.artist_id)

即可