我有一个使用ngrx/store
来维护应用程序状态的Angular应用程序。使用observable作为有效负载的调度行为
在我的根组件中,我想调度一个动作来设置状态中侧边栏的可见性。此刻,我的代码看起来是这样的:
export class AppComponent implements OnInit {
title = 'ye';
isSidenavVisible$: Observable<boolean>;
private isSidenavVisible: boolean; // Is this really needed?
constructor(private store: Store<State>) {
this.isSidenavVisible$ = this.store.select(getIsSidenavVisible);
}
ngOnInit() {
this.isSidenavVisible$.subscribe(isSidenavVisible => {
this.isSidenavVisible = isSidenavVisible;
});
}
toggleSidenav() {
this.store.dispatch(new SetSidenavVisibility(!this.isSidenavVisible));
// I would like to dispatch the observable as a payload instead
}
}
即使这个工作,我想摆脱的(在我看来)多余private isSidenavVisible
可变的,能够与唯一的工作结束了可观察到的isSidenavVisible$
。
减速机中的初始状态设置为true
。
这是否可能,如果是这样,我可以通过什么方式进一步简化我的代码?
如果而不是使用可观察到,如果你使用BehaviourSubject作为isSidenavVisible $的类型,那么你可以这样做isSidenavVisible $ .getValue() HTTPS:/ /github.com/Reactive-Extensions/RxJS/blob/master/doc/api/subjects/behaviorsubject.md –
'BehaviourSubject'看起来很有趣,感谢您的链接! –
让我知道它是否适用于ngrx商店。 –