首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用EventEmitter angular发出一个值

使用EventEmitter angular发出一个值
EN

Stack Overflow用户
提问于 2020-05-09 21:11:56
回答 2查看 52关注 0票数 0

我有四个值的产品(A,B,C,D) (在一个标签之间)。我创建了一个子组件angular,我想在用户单击时用EventEmitter.emit将一个好的值(A、B或Cor D)传递给父组件,但我不能。我总是发送第一个值A。这是我的角度代码。

component.html

代码语言:javascript
复制
<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>

在component.ts中

代码语言:javascript
复制
alax= 'ARMOIRS';
beter= 'PARASOLS';
colar= 'CAMBOUS';
dera= 'DIAMBRE';

 @Output()
 sendRequestData = new EventEmitter(); 

 getName(catName:string) {
  console.log("catName nom : "+catName);
  this.sendRequestData.emit(catName);
}

在父亲component.html中,我有:

代码语言:javascript
复制
<app-chilComponent (sendRequestData)="treatment($event)"></app-childComponent>

在component.ts父亲中

代码语言:javascript
复制
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
}

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2020-05-09 21:20:52

您对所有对象都使用了相同的选择器#ca。改变它们

代码语言:javascript
复制
<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>

希望它能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2020-05-09 21:46:23

如果您可以在控制器中调整数据结构,那么如果您只打算在事件处理程序中自引用模板引用变量,我就不认为需要它了。

只需对变量稍作更改,即可实现相同的行为。请尝试以下操作

控制器

代码语言:javascript
复制
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);
}

模板

代码语言:javascript
复制
<table>
  <thead>
    <th *ngFor="let item of data">
      <a (mouseup)="getName(item.category.name)">{{ item.label }}</a>
    </th>
  </thead>
</table>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61697266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档