我有以下代码
this.expenseClaimService.saveExpenseItem(this.item)
.then((data) => {
Object.assign(this.item, data);
console.log('saveExpenseItem.then', data);
this.onCategorySelected.emit();
});
});
我在解决诺言时发出事件,
问题是事件处理程序没有捕获事件。
如果我在代码中发出相同的事件(不是它承诺解决),它工作正常,这意味着一切都正确连接。
我发现了什么是错的,我在ngIf中有了组件,在我的承诺被解决的时候,值被改变了,因为ngIf变为假,然后组件被破坏,并且没有观察者对该事件的了解。所以我将其更改为hidden
,现在它可以正常工作。
<div *ngIf="this.item" [hidden]="this.item.ExpenseCategoryId != null">
<app-expense-item-category-selector [item]="item" (onCategorySelected)="onCategorySelected($event)"></app-expense-item-category-selector>
</div>
我保留了问题,如果其他人遇到同样的问题,我也不会将其删除
答案 0 :(得分:1)
假设在子组件中发生了服务调用,我建议以下内容以避免范围驱动的问题:
aMethod(){
this.expenseClaimService.saveExpenseItem(this.item)
.then((data) => {
console.log('saveExpenseItem.then', data);
this.doEmit();
});
});
}
private doEmit(){
this.onCategorySelected.emit();
}