我有一个包含与我的组件相关的init数据的商店,这个数据的一个例子是带有apiPath的字符串。
ngOnInit() {
// this store contains data related to the component
this.store.dispatch(this.searchActions.addPageData(this.pageData));
}
然后我有另一个动作需要来自前一个商店的数据,并在路线参数更改时被触发:
this.route.params.subscribe((params: Params) => {
this.store.dispatch(this.searchActions.routerParamsSearchPageChanged(pageFilters));
})
你如何等到第一个行动来填补商店,发出第二个动作。
答案 0 :(得分:1)
我假设第一个操作(addPageData)用一些信息填充商店。然后,您想使用route参数过滤掉数据,猜测某种类型的查询?如果这个查询不能满足您的需求,也许您可以再详细说明一下。
基本上,检索所需的商店信息和查询参数。通过某种类型的条件筛选该查询,这可能只是像我一样检查null
以确保数据存在。
Observable.combineLatest(
this.store.select(state => state.bookState),
this.route.params.select<string>('query')
)
.filter(([bookState]) => bookState.books !== null)
.subscribe(([books, query]) => {
this.store.dispatch({
type: '[Books] FILTER_BY_QUERY',
payload: {
bookType: books.type,
query: query
}
});
});