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)
上的函数调用?
任何/所有帮助表示赞赏! :)
答案 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)