如何解决Ngrx:如何订阅组件中的一些动作?
我需要订阅几个动作并将它们合二为一,否则会导致重复弹出消息。
ngOnInit(): void {
forkJoin([
this.actions.pipe(ofType(userActions.updateUserFail)),this.actions.pipe(ofType(brandActions.updateBrandFail)),]).subscribe(() => {
this.toastr.error(userInfoFailMsg);
});
}
但这不起作用。
解决方法
ForkJoin 仅在所有源 observable 完成时才发出值,请参阅 https://www.learnrxjs.io/learn-rxjs/operators/combination/forkjoin。
根据定义,动作是一个永无止境的流。我想你想要的是: https://www.learnrxjs.io/learn-rxjs/operators/combination/merge 像这样:
ngOnInit(): void {
merge([
this.actions.pipe(ofType(userActions.updateUserFail)),this.actions.pipe(ofType(brandActions.updateBrandFail)),]).subscribe(userInfoFailMsg => {
this.toastr.error(userInfoFailMsg);
});
}
通过操作,这实际上也应该有效:
ngOnInit(): void {
this.actions.pipe(ofType(
userActions.updateUserFail,brandActions.updateBrandFail)
).subscribe(userInfoFailMsg => {
this.toastr.error(userInfoFailMsg);
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。