是否在RouteSerializer中返回Observable/Access存储值



ngrx-router-store中的RouteSerializer是否有可能返回PromiseObservable

我真正想实现的是查找存储在商店中的一些链接元数据。但是,他们访问存储值的唯一方法是通过返回Observablethis._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 };
})
);
}
}

只需订阅商店,并将链接作为成员变量进行维护:

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 };


}
}

相关内容