我正在创建一个角度应用程序,并创建了3个简单的crud操作。我使用ngrx进行状态管理,效果很好。我已经订阅了每个crud状态的一些片段,如
createUserLoaded$.subscribe(loaded => this.showSuccessNotification());
一切都很好。我在相应组件的 ngOnInit 上订阅这些可观察对象,并在 ngOnDestroy 上再次取消订阅所有这些可观察对象。
但问题是,当我创建用户时,转到另一条路线并返回创建用户路径,它会显示成功通知。原因是createUserLoaded$
的最后状态为真,并且相应的组件再次订阅它。
所以我想得到社区的意见,我应该再次将减速器重置为初始状态吗?这是一个好习惯吗?或者我还应该做些什么?
答案 0 :(得分:1)
没有代码无法帮助您正确。但你可以在你的组件的ngOnDestroy()上调度和事件来重置状态,如果你愿意,也养成在你的Observable模板中使用async的习惯,他们会为你取消订阅。 Ngrx与Smart/Dumb Component
交手 ngOnDestroy(): void {
this.store.dispatch(new classAction.resetSuccessNotification());
}
如果您只是使用祝酒词来显示通知并且不关心他们的状态,那么您可以只使用效果.loggerService只是一个显示吐司的服务
@Effect({dispatch: false})
createUserLoadede$ = this.actions$.pipe(
ofType(Vendor.ActionType.CREATE_USER_LOADED),
map((action: Vendor.createUserLoadedel) => action.payload),
tap((payload) => this.loggerService.SuccessToast(payload.message, 6000))
);