在一个组件中,我使用商店为我的状态的某些部分订阅了一个主题。从那时起,当那部分状态发生变化时,我将开始接收更新,并且我的组件将反映此状态。到目前为止,一切都很好。
但是,我还希望我的组件能够根据此状态的当前值正确初始化。因此,一旦我订阅,我还希望发出当前值 - 例如,我的视图可以正确初始化。
带有 Angular 组件的示例:
我的.component.ts
export class MyComponent implements OnInit {
constructor(private store: Store<State>) { }
// As soon as I subscribe, I want this to also emit the current
// value, e.g. so my view can correctly reflect the current state.
public mode$ = new Subject<ApplicationMode>();
ngOnInit() {
this.store.select(getApplicationState)
.select(s => s.applicationMode).subscribe(this.mode$);
}
}
我的.component.html
{{ mode$ | async }}
我相信我想要/期望的是我商店的这一部分会返回 aBehaviorSubject
或 a ReplaySubject(1)
。但是从商店中选择任何东西总是返回一个Store<T>
显然是某种主题的,但似乎在订阅时不会发出当前值?
我猜,可能的工作是在应用程序初始化时订阅这个状态,然后通过它的所有子组件传递这个值,一直到这个,所以这个组件变成了一个愚蠢的,而不是选择从商店本身。这可能是要走的路吗?还是我缺少一些基本的东西来完成这项工作?