2つのHTTPサービスと1つのソケットを呼び出す必要があります。最初のhttp呼び出しは、メタデータを取得し、その値の1つをローカルに設定することです。次に、後でソケット経由で更新される初期値を返す2番目のhttpサービスを呼び出す必要があります。RxJS5 - combineLatestがAngularのローカルプロパティにアクセスしていない
export class MyComponent implements OnInit {
subscription: Subscription;
title: string;
prop1: number;
prop2: number;
constructor(private http: HttpService,
private socket: SocketService,
private route: ActivatedRoute) {
}
ngOnInit() {
this.prop1 = this.route.snapshot.parent.params['prop1'];
this.subscription = this.http.get('/metaData')
.do(data => {
this.title = data.title;
this.prop2 = data.prop2;
})
//this.prop2 is undefined in combineLatest...
.combineLatest(
this.http.get('initialData', { prop1: this.prop1, prop2: this.prop2 }),
this.socket.get('updateEvents', { prop1: this.prop1, prop2: this.prop2 }),
this.updateList)
.subscribe(data => {
this.data = data
})
}
私は近くだと考えているが、prop2
がundefined
あるようcombineLatest
、オペレータがローカルVARSにアクセスしていないことが表示されます:
これは私がこれまで持っているものです。これはside effect
のdo
オペレータでprop2がcombineLatest
の時刻に表示されないためですか?
注:combineLatest
を使用した場合
.switchMap(data => this.http.get('initialData', { prop1: this.prop1, prop2: this.prop2 }))
なぜPROP2 undefined
です:私はこのように、PROP2作品をswitchMap
を使用した場合?