如何用路由器参数的结果替换123
(我使用的是Angular 2)?
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,而是希望使用apollo查询。但不太确定如何把它们放在一起?
答案 0 :(得分: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);