【发布时间】:2018-09-07 14:20:36
【问题描述】:
我有以下代码
this.expenseClaimService.saveExpenseItem(this.item)
.then((data) => {
Object.assign(this.item, data);
console.log('saveExpenseItem.then', data);
this.onCategorySelected.emit();
});
});
当 promise 解决时我会发出事件,
问题是事件处理程序没有捕捉到事件。
如果我在代码中发出相同的事件(不是承诺解析)它工作正常,这意味着一切都正确连接。
更新(已解决)
我发现了问题所在,我在 ngIf 中有组件,在我的 promise 被解决时,值以某种方式更改,ngIf 变为 false,然后组件被销毁,并且不再有该事件的观察者。所以我把它改成了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>
我保留这个问题,我不会删除它以防其他人有同样的问题
【问题讨论】:
-
似乎是范围问题。您是否尝试将发射调用放入本地方法并改为调用此方法?
-
您的订阅者是什么样的?它是在同一个组件或服务中还是在其他地方?您如何找到它以及何时找到它?
-
@Zlatko
<app-expense-item-category-selector [item]="item" (onCategorySelected)="onCategorySelected()"
标签: angular events eventemitter