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