首页 > 解决方案 > 路由更改后可观察对象未重置为初始状态?

问题描述

我有一个可观察到的数据流绑定到网格数据源的数据流,如下所示,当一个项目被选中时,网格数据填充群,但是当我导航到应用程序的其他路由并导航返回相同的路线时,我可以看到我是我是变量的变量using 正在重新声明和重新初始化,但 observables 不是因为它们使用 combineLatest,我认为网格将始终绑定到源 observable 发出的最新项目。有没有一种方法可以在路由更改期间将此可观察对象重置为初始状态,而无需调用 Subject 的 next() 方法。

selectedMasterPlan$ = combineLatest([this.masterPlans$, this.commissionPlanService.masterPlanChange$]).pipe(
map(([plans, id]) => {
  const plan = plans.filter(x => x.masterPlanId === id);
  if (plan.length > 0) {
    return plan[0];
  }
  return null;
}));

1) this.commissionPlanService.masterPlanChange$ 更改是一个可观察到的操作流,绑定到模板中的用户选择。

2) this.masterPlans$ 是一个可观察的数据流。

我认为将这些声明移至 ngOnInit 会有所帮助,但我不想使用 ngOnInit。

标签: angularrxjsangular-ui-routerreactive-programming

解决方案


推荐阅读