[英]Emit one value with EventEmitter angular
我有四个产品值(A,B,C,D)(在标签之间)。 我创建了一个子组件 angular 并且我想在用户单击时使用 EventEmitter.emit 将一个好的值(A 或 B 或 Cor D)传递给父组件,但我不能。 我总是发送第一个值 A。这是我的 angular 代码
组件.html
<table>
<thead>
<th><a #ca [attr.data-cat]="alax" (click)="getName(ca.dataset.cat)">A</a></th>
<th><a #ca [attr.data-cat]="beter" (click)="getName(ca.dataset.cat)">B</a></th>
<th><a #ca [attr.data-cat]="colar" (click)="getName(ca.dataset.cat)">C</a></th>
<th><a #ca [attr.data-cat]="dera" (click)="getName(ca.dataset.cat)">D</a></th>
</thead>
</table>
在组件.ts
alax= 'ARMOIRS';
beter= 'PARASOLS';
colar= 'CAMBOUS';
dera= 'DIAMBRE';
@Output()
sendRequestData = new EventEmitter();
getName(catName:string) {
console.log("catName nom : "+catName);
this.sendRequestData.emit(catName);
}
在父组件中。html 我有:
<app-chilComponent (sendRequestData)="treatment($event)"></app-childComponent>
在父组件.ts
treatment(message: any){
console.log(message) // I have always 'ARMOIRS' when I click on A or B or C or D
// I want to have 'ARMOIS' when I click on A and 'PARASOLS' when i click on B
}
任何想法?
您对所有人都使用了相同的选择器#ca
。 改变它们
<table>
<thead>
<th><a #ca1 [attr.data-cat]="alax" (click)="getName(ca1.dataset.cat)">A</a></th>
<th><a #ca2 [attr.data-cat]="beter" (click)="getName(ca2.dataset.cat)">B</a></th>
<th><a #ca3 [attr.data-cat]="colar" (click)="getName(ca3.dataset.cat)">C</a></th>
<th><a #ca4 [attr.data-cat]="dera" (click)="getName(ca4.dataset.cat)">D</a></th>
</thead>
</table>
希望能帮助到你!
如果您可以调整 controller 中的数据结构,如果您只想在事件处理程序中自行引用它,我认为不需要模板引用变量。
您可以通过对变量进行微小更改来实现相同的行为。 尝试以下
Controller
data = [
{ category: { name: 'ARMOIRS', value: 'alax' }, label: 'A' },
{ category: { name: 'PARASOLS', value: 'beter' }, label: 'B' },
{ category: { name: 'CAMBOUS', value: 'colar' }, label: 'C' },
{ category: { name: 'DIAMBRE', value: 'dera' }, label: 'D' },
];
getName(categoryName: string) {
console.log(categoryName);
this.sendRequestData.emit(catName);
}
模板
<table>
<thead>
<th *ngFor="let item of data">
<a (mouseup)="getName(item.category.name)">{{ item.label }}</a>
</th>
</thead>
</table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.