0
为了接收来自多个子组件的事件在一个父组件 我从父(ProjectsComponent)通过事件信道到每个子组件(ProjectHeaderComponent)EventEmitter:同时发生的事件混合,如何防止这种情况发生?
projects.component.ts
projects: Project[];
editing = false;
channel: EventEmitter<boolean>;
constructor(private projectService: ProjectService) {
this.channel = new EventEmitter<boolean>(false);
this.channel.subscribe(isEditing => {
this.editing = isEditing;
console.log(this.editing);
});
}
projects.component。 HTML
<div *ngFor="let project of projects">
<project-header [project]="project" [isEditing]="channel"></project-header>
</div>
项目header.component.ts
@Input() project: Project;
@Input() isEditing: EventEmitter<boolean>;
set editing(data: boolean) {
//....
this.isEditing.emit(this._editing);
}
项目header.component.html
<input type="text" (click)="toggleEditing()">
但是,如果我已经在一个输入和点击另一个,事件融入我收到true, false
,而不是false, true
我试着换this.editing = isEditing;
与setTimeout(() => this.editing = isEditing, 0);
但那不行。
很难给予当我们不知道哪来的财产的任何建议'editing'使用的事件。否则,这段代码对我来说看起来很好,应该按照你的要求工作(如果我正确理解你需要的)。 – martin
谢谢@Martin,在setTimeout的底部添加开放事件到底部的调用堆栈,因为在答案看起来很好,我停下来,谢谢) – bjornmelgaard