2016-12-14 38 views
0

如何將路由器參數(我正在使用Angular 2)的結果替換爲123如何使用另一個Observable中的某個項目

this.data = this.apollo.watchQuery({ 
    query: query, 
    variables: { 
    custNum: 123 
    } 
}) 
    .map(({data}) => data.allCustomers.nodes); 

通常情況下,我將訪問PARAMS這樣的...

this.route.params 
    .switchMap((params: Params) => this.customerService.getCustomer(+params['id'])) 
    .subscribe((results: any) => this.data = results); 

但我不再有一個的CustomerService,並希望使用阿波羅查詢代替。但不太清楚如何把它們放在一起?

+0

不能添加watchQuery裏面訂閱route.params嗎? –

回答

0

您的watchQuery不反應,您可以動態替換傳遞給它的variables。每當您的custNum更改並放棄以前的Observable時,您需要設置一個新的watchQuery。你可以通過.switch()來做到這一點,當流發出一個新的Observable時,它可以從之前的Observable退訂。

Rx.Observable.interval(500) 
    .map(customerNumber => this.apollo.watchQuery({ 
    query: query, 
    variables: { 
     custNum: customerNumber 
    } 
    }) /* returns ObservableQuery */ 
    .switch() /* unsubscribes previous watchQuery, subscribes new one */ 
    .map(({data}) => data.allCustomers.nodes); 
相關問題