我是Angular的新手,并且我已经阅读了有关事件绑定的信息,因此可以执行以下操作:
<button (click)="doSomething()"></button>
我想知道是否可以创建自定义事件并执行相同的操作。假设我想要一个自定义事件,例如:deleteItem
,是否可以执行这样的操作?又如何?
<my-component (deleteItem)="doSomething()"></my-component>
答案 0 :(得分:1)
当然,您可以使用eventEmitter 在my-component ts文件中添加此
@Output() deleteItem= new EventEmitter();
当您想发起活动时,请执行此操作
this.deleteItem.emit();
您还可以像这样传递数据
this.countUpdate.emit({value: some data });
然后像这样在父组件中捕获它
<my-component (deleteItem)="doSomething($event)"></my-component>
以及父ts文件
doSomething(event)
{
console.log(event);
}
答案 1 :(得分:1)
您应该查看Angular的文档示例,以了解 parent监听子事件:
您使用@Output()
装饰器声明一个类属性,并将其实例化到新的EventEmitter实例。
import { Component, EventEmitter, Input, Output } from '@angular/core';
@Component({
selector: 'app-voter',
template: `
<h4>{{name}}</h4>
<button (click)="vote(true)" [disabled]="didVote">Agree</button>
<button (click)="vote(false)" [disabled]="didVote">Disagree</button>
`
})
export class VoterComponent {
@Input() name: string;
@Output() voted = new EventEmitter<boolean>();
didVote = false;
vote(agreed: boolean) {
this.voted.emit(agreed);
this.didVote = true;
}
}
请记住,最好始终在EventEmitter发出值时向其添加通用类型。
如果事件发出布尔值,则应使用@Output() eventName = new EventEmitter<boolean>();
上面的组件可以与<app-voter (voted)="handleVote($event)"></app-voter>
的父组件一起使用
答案 2 :(得分:0)
EventEmitter可用于创建自己的自定义事件,eventemitter是角度框架中的对象。
@Output() deleteItem= new EventEmitter<{itemName:string}>(); ItemName=''; this.deleteItem.emit({ItemName=this.itemName});