asObservable을 노출하는 상점이 있습니다. 뷰는이 뷰에 가입하고 데이터를 표시합니다. Singleton 서비스로 변경 했으므로 첫 번째로드에서 작업 중이었습니다. 먼저 데이터가 표시되지 않고 구독 이벤트가 트리거되지 않은 페이지로 이동했습니다. subject.next가 업데이트되고 뷰 업데이트 및 모든 것이 훌륭한 호출을 유발하는 데이터에 대한 작업을 수행 한 후Observer가 컴포넌트에 처음로드 할 때 구독하지 않습니다.
이것은 경쟁 조건 문제가 아니며 페이지의 생성자가 호출 될 때 데이터가 저장소에 있음을 보장합니다. 구독하는
- 데이터 서버
- subject.next을 (로드 : 이벤트
순서는 다음과 같다 (디버깅시 확인) 인 옵저버
구독 이벤트가 발생하지 않으며 저장소에 존재하더라도 데이터가 채워지지 않습니다. 그런 다음 목록에서 일종의 crud 연산을 수행하면 모든 것이 예상대로 계단식으로 처리되고 next()가 호출되고 가입 이벤트가 발생합니다.
페이지를로드 할 때 데이터를 읽도록 페이지를 가져올 수 있습니까?
data.store
protected _subject$: Subject<Array<any>>;
this._subject$.next(newData); // confirmed via console this happens with good data
get contacts$(): Observable<any> {
return this._subject$.asObservable();
}
구성 요소 - 나는 모두 같은 결과
// this happens after the above data is already set
this.contacts$.subscribe(data => {
// this block does not execute on page load
});
몇 가지 코드를 추가 할 수 있습니까? – echonax
이 산문 묘사에서 정확히 무슨 일이 벌어지고 있는지 전체 그림을 얻기가 어렵습니다. 플 런커에서 재생산 할 수 있습니까? –
관련 비트를 추가 했으므로이 프로세스를 관리하는 코드가별로 없습니다. –