2017-12-14 15 views
1

Ngrx의 combineLatest를 사용하여 탐색 끝내기 작업을 수행하거나 다른 구독 상태 변경을 시도합니다. 내 구성 요소의 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에 컴파일러 오류가 있습니다 유형의

인수를 '구독'IScheduler '유형 의 매개 변수에 할당 할 수없는 | 구독 가능 | PromiseLike | ArrayLike | ((... 값 : 모든 []) => {}) "I 라우터 상태의 combineLatest에 제공 될 예정하고 어떤

?

+0

로 변경해야 -with-super-intuitive-interactive-diagrams-20fce8e6511) –

답변

2

combineLatestobservables을 결합하고 모든 관측 값이 방출 할 최신 값을 가질 때 최신 값을 방출합니다. 따라서 구독이 아닌 관측 가능 항목을 전달해야합니다. 그래서 코드는 [슈퍼 직관적 인 상호 작용 다이어그램 RxJs 시퀀스를 결합 알아보기] 봐 (https://blog.angularindepth.com/learn-to-combine-rxjs-sequences을

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(); 

} 
+0

아 - 나는 또한 마지막'.subscribe()'를 놓쳤다. 그러나 다음 예제를 따르는 경우 : https://netbasal.com/rxjs-six-operators-that-you-must-know-5ed3b6e238a0 그러나 나는 어떤 값도 방출되지 않습니다. 상태가 올바르다는 것을 알고 있습니다. 제대로 작동하는 'patientState'를 활용하는 다른 구성 요소가 있기 때문입니다. 네비게이션을 한 후에 만 ​​방출 된 값을 봅니다. 나는 항해 여부와 관계없이 최신 'patientState'를보기를 기대하고있었습니다. – Brandon

+0

@Brandon combineLatest는 처음 구독 할 때 초기 방출을 시작하지 않습니다. 따라서 관측 값 중 하나가 방출 될 때까지 최신 값을 얻지 못합니다. – LLai

+0

흠. 그럴 수있는 또 다른 연산자가 있습니까? 또는 더 나은 방법론? – Brandon