我的Nativescript Angular应用程序动态地将数据作为项目列表返回。对于每个项目,我使用* ngFor创建一个附加了点击事件的按钮。我想将按钮本身作为参数传递,因为我需要添加cssClass。但我无法使用ViewChild,因为数据是动态的。我如何实现这一目标?
<Button *ngFor="let item of items" [text]="item.name" (tap)="select(item, buttonObject ? )></Button>
select(item, buttonObject) {
let button = <View>buttonObject.nativeElement;
...
}
感谢您的帮助。 :)
答案 0 :(得分:1)
这可以使用局部变量来完成:
<Button #myButton *ngFor="let item of items"
[text]="item.name" (tap)="select(item, myButton)></Button>
select(item, buttonObject) {
let button = buttonObject;
}
答案 1 :(得分:1)
对于将来寻找相同答案的其他人,除了@HabibKazemi提供的解决方案之外,为了获取父视图中的每个按钮,只需执行以下操作:
select(button, item) {
let parent = button.parent;
let count = parent.getChildrenCount();
for (var c = 0; c < count; c++) {
let btn = parent.getChildAt(c);
btn.color = "black";
}
button.color = "white;
}