Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Can';使用路由器状态在角度上进行t组合测试_Angular_Ngrx - Fatal编程技术网

Angular Can';使用路由器状态在角度上进行t组合测试

Angular Can';使用路由器状态在角度上进行t组合测试,angular,ngrx,Angular,Ngrx,我正在尝试使用Ngrx中的CombineTest在导航端执行操作,或者在另一个订阅中执行状态更改。在我的组件的ngOnInit()中,我有: ngOnInit(): void { const routerSub = this.router.events.subscribe(); const patientSub = this.patientService.state.subscribe(); Observable.combineLatest(routerSub, pat

我正在尝试使用Ngrx中的CombineTest在导航端执行操作,或者在另一个订阅中执行状态更改。在我的组件的
ngOnInit()
中,我有:

ngOnInit(): void {
    const routerSub = this.router.events.subscribe();
    const patientSub = this.patientService.state.subscribe();

    Observable.combineLatest(routerSub, patientSub, (routerEvent, patientState) => {
      console.log(routerEvent);
      console.log(patientState);
    });
  }
但是,我在
routerSub
上有一个编译器错误:

类型为“Subscription”的参数不能分配给类型为的参数 “IScheduler | Subscribable | PromiseLike | ArrayLike”| ((…值:any[])=>{})

对于路由器状态,我应该为
combinelatetest
提供什么?

组合
可观察对象
,并在所有可观察对象都有最新值要发出时发出最新值。因此,您需要传入可观察对象,而不是订阅。所以你的代码应该改成

ngOnInit(): void {
    const routerSub = this.router.events;
    const patientSub = this.patientService.state;

    Observable.combineLatest(routerSub, patientSub, (routerEvent, patientState) => {
      console.log(routerEvent);
      console.log(patientState);
    })
    .subscribe();

}

啊-我还错过了最后的
.subscribe()
。但是,如果我遵循以下示例:但是,我从未看到任何值发出。我知道状态已填充,因为还有其他组件利用正常工作的
patientState
。只有在导航之后,我才能看到发出的值。无论是否导航,我都希望看到最新的
patientState
。@Brandon CombineTest在您首次订阅时不会触发初始发射。因此,在一个可观察到的发射之前,你不会得到最新的值。还有其他接线员吗?还是更好的方法?@Brandon抱歉我弄错了。如果两个观测值都有一个最新的值要发射,则CombineTest
将在subscribe
时发射。所以听起来好像是你的状态有一个最新的值,但是router.events没有。这就是为什么当你导航时,现在两个观测值都有一个最新的值和最组合的发射。因此,您正在寻找在订阅时发出的东西,如果任何一个可观测对象具有最新的值,然后在任何一个可观测对象发出时发出?我实际上使用了
race
。我将您的答案标记为已接受,因为它确实解决了我的编译问题:)请看