路由更改后,可观察对象是否未重置为初始状态?

时间:2019-09-30 20:29:37

标签: angular rxjs angular-ui-router reactive-programming

我有一个可观察到的数据流绑定到网格数据源,如下所示:选择一个项目时,将填充网格数据,但是当我导航到应用程序的其他路径并导航回相同的路径时,我可以看到我正在使用的变量将被重新声明和重新初始化,但由于它们使用combinateLatest,因此可观察对象不是,我认为网格将始终绑定到源可观察对象发出的最新项。有没有一种方法可以在路由更改期间将此可观察到的状态重置为初始状态,而无需调用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。

0 个答案:

没有答案