【发布时间】:2020-06-04 11:24:31
【问题描述】:
在我的 Angular 项目中,我想在 .then 和 .catch 中发射,但它们确实会被调用。 .then 和 .catch 中的所有其他内容都会被调用。
当我在 Promise 之外发射时,它确实有效。
这是我的代码
updateAssignee(newAssignee: string) {
this.storyService.updateAssignee(this.story, newAssignee).then(res =>{
console.log('test') //This one gets called
this.onError.emit({ //This one does not get called
error: false,
errorText: ''
});
}).catch((error) => {
console.log('test') //This one gets called
this.onError.emit({ //This one does not get called
error: true,
errorText: '• ' + error.message
});
});
this.onError.emit({ //This one gets called
error: false,
errorText: '• Missing permissions'
});
}
是不是不能在 .then 和 .catch 内发射?还是我错过了什么?
加载这些组件的方式是通过 ngFor 循环。也许这会导致一些问题?
<span *ngFor="let story of done">
<app-storyboard-story (onError)="throwError($event)" [story]="story" [project]="project" cdkDrag></app-storyboard-story>
</span>
【问题讨论】:
-
有可能,你如何验证它没有被调用?
-
通过记录结果。发射应该去的函数不会被调用。只靠承诺之外的人
-
也许那个时候监听器已经退订了。尝试在
this.storyService之前添加this.onError.subscribe(console.log),以确保它们不会被调用。 -
好吧,他们确实会被叫到
-
是的 - 这意味着您要通知的侦听器已取消订阅 - 因此您需要更改它的侦听方式和流程。
标签: angular eventemitter