ngrx-router-store中的RouteSerializer是否可以返回Promise或Observable
我真正想实现的是查找存储在存储库中的一些链接元数据。但是,它们访问存储值的唯一方法是通过返回Observable的this._store.select。我在文档中没有看到任何允许这种返回类型的东西,所以在我尝试这种方法并尝试不同的方法之前,请在这里发布。奇怪的是,ngrx在任何情况下都会拒绝与Observables合作……
export class CustomSerializer implements RouterStateSerializer<RouterStateUrl> {
serialize(routerState: RouterStateSnapshot, private _store: IAppStore): RouterStateUrl {
let route = routerState.root;
while (route.firstChild) {
route = route.firstChild;
}
const {
url,
root: { queryParams },
} = routerState;
const { params } = route;
// Only return an object including the URL, params and query params
// instead of the entire snapshot
return this._store.select( state => state.navStore.links).pipe(
map( links => {
const l = links.find(l => l.id === 123);
return { url, params, queryParams, l };
})
);
}
}发布于 2020-11-19 16:02:15
只需订阅商店,并将链接作为成员变量进行维护:
export class CustomSerializer implements RouterStateSerializer<RouterStateUrl> {
links: string[] = [];
constructor(private store: IAppStore) {
this._store.select( state => state.navStore.links).subscribe(t => {
this.links = t;
});
}
serialize(routerState: RouterStateSnapshot, private _store: IAppStore): RouterStateUrl {
let route = routerState.root;
while (route.firstChild) {
route = route.firstChild;
}
const {
url,
root: { queryParams },
} = routerState;
const { params } = route;
// Only return an object including the URL, params and query params
// instead of the entire snapshot
const l = this.links.find(l => l.id === 123);
return { url, params, queryParams, l };
}
}https://stackoverflow.com/questions/64898137
复制相似问题