Angular 以正确的方式使用rxjs withLatestFrom
我有两页(第X页和第Y页)。它们都共享相同的组件和解析器 在共享组件的Angular 以正确的方式使用rxjs withLatestFrom,angular,rxjs,Angular,Rxjs,我有两页(第X页和第Y页)。它们都共享相同的组件和解析器 在共享组件的ngOnInit()中,我使用route.queryParams和route.data: constructor( private route: ActivatedRoute, ) { } ngOnInit(): void { this.route.queryParams.pipe( withLatestFrom(this.route.data), map(([qp, data]: [Params,
ngOnInit()
中,我使用route.queryParams
和route.data
:
constructor(
private route: ActivatedRoute,
) { }
ngOnInit(): void {
this.route.queryParams.pipe(
withLatestFrom(this.route.data),
map(([qp, data]: [Params, Data]) => {
}),
);
}
另外,请注意,对于我在路由
中定义的两个页面:runguard和resolvers:'paramsOrQueryParamsChange'
。这意味着,在共享同一组件的页面之间导航时,解析程序也将被激活
现在-问题是当我从X页导航到Y页或反之亦然。
问题在于withLatestFrom
。
当我移动到第二页时,我在映射(([qp,data]:[Params,data])=>{…})中得到的数据
等于解析程序为进入第一页提供的数据——但我需要解析程序为第二页提供的数据
如何修复它?看起来像此.route.queryParams
在路由更改时发出此.route.data
之前发出。如果要在上次发射后发射两个观测值,请使用zip
zip(this.route.queryParams,this.route.data).pipe(
映射([qp,数据]:[Params,data])=>{
}),
);
看起来像this.route.queryParams
在路由更改时发出this.route.data
之前发出。如果要在上次发射后发射两个观测值,请使用zip
zip(this.route.queryParams,this.route.data).pipe(
映射([qp,数据]:[Params,data])=>{
}),
);