繁体   English   中英

用 EventEmitter angular 发射一个值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM