事件绑定中的动态模板变量
Dynamic template variable inside event binding
我有一个 angular 组件具有这种模板变量名
#name_{{i}}
在 *ngFor 中,这样生成的任何组件都有不同的变量名。
我需要将 整个变量 (不是作为字符串,作为对模板变量的引用)传递给同一个 *ngfor 内的按钮事件绑定中的函数,就像这样
(click)="myFunction(name_{{i}})"
现在,我不能这样通过
(click)="myFunction('name_'+i)"
因为 myFunction 不需要字符串作为变量,而是模板变量引用。
在事件绑定中传递插值导致我出现此错误:
Parser Error: Got interpolation ({{}}) where expression was expected
由于变量是动态的,如何在不使用插值的情况下将模板变量传递给函数?
你可以利用@ViewChildren
//Html
<element *ngFor="let each of all" (click)="myFunction(i)" #myElement></element>
//TS
@ViewChildren('myElement') myElementList: QueryList<YourType>;
myFunction(ind) {
console.log(this.myElementList.toArray()[ind]);
}
您不需要这样做。
您不必为每个实例生成一个名称,甚至不必使用@viewChildren。
您可以为 ngFor 生成的每个元素使用相同的引用名称。
事实上,引用调用会自动附加到它在 *ngFor 循环指令内生成的引用变量(它就像传递给 ngFor 指令的模板内的范围)
你可以这样写:
<div #item *ngFor="let item of list" (click)="myFunction(item)"></div>
希望对您有所帮助:)
我有一个 angular 组件具有这种模板变量名
#name_{{i}}
在 *ngFor 中,这样生成的任何组件都有不同的变量名。 我需要将 整个变量 (不是作为字符串,作为对模板变量的引用)传递给同一个 *ngfor 内的按钮事件绑定中的函数,就像这样
(click)="myFunction(name_{{i}})"
现在,我不能这样通过
(click)="myFunction('name_'+i)"
因为 myFunction 不需要字符串作为变量,而是模板变量引用。
在事件绑定中传递插值导致我出现此错误:
Parser Error: Got interpolation ({{}}) where expression was expected
由于变量是动态的,如何在不使用插值的情况下将模板变量传递给函数?
你可以利用@ViewChildren
//Html
<element *ngFor="let each of all" (click)="myFunction(i)" #myElement></element>
//TS
@ViewChildren('myElement') myElementList: QueryList<YourType>;
myFunction(ind) {
console.log(this.myElementList.toArray()[ind]);
}
您不需要这样做。
您不必为每个实例生成一个名称,甚至不必使用@viewChildren。
您可以为 ngFor 生成的每个元素使用相同的引用名称。
事实上,引用调用会自动附加到它在 *ngFor 循环指令内生成的引用变量(它就像传递给 ngFor 指令的模板内的范围)
你可以这样写:
<div #item *ngFor="let item of list" (click)="myFunction(item)"></div>
希望对您有所帮助:)