我是 ngrx 的新手,我在退订时遇到问题。我正在使用最新版本的 Angular 和 ngrx。
我有 CreateState 和 ModelState。在对话中创建 CreateState 后,我想将 CreateState 复制为 ModelState 的一部分,然后清除 CreateState 使对话变为空。
为此,我首先接收 CreateState 的整个状态,然后调用 ModelState 的 Action 进行复制。
this.store$.select(CreateSelectors.selectCreateState).subscribe((state: CreateState.State) => {
this.store$.dispatch(new ModelActions.CreateAction(state));
this.router.navigateByUrl('/canvas');
});
移至新页面后,我正在调用 CreateState 上的操作以进行清除。
ngOnInit() {
this.store$.dispatch(new CreateActions.ClearAction());
}
但似乎我的第一页中的 Select Subscription 仍在侦听,因此清除 CreateState 会触发 select 并再次调度 ModelActions.CreateAction。
我尝试只收听Observable 或取消订阅 Observable 但 Typescript 说or.first()
没有功能。.first()
.unsubscribe()
我有什么问题吗?我应该使用不同的方法来移动和清除状态吗?