Angular - 如何仅在 URL 参数存在时执行查询
Angular - How to perform a query only if a URL param exists
我有以下查询。如果 URL 参数 (paramOne) 存在,是否可以只执行此操作?
queryAndSubscribe(){
this._subscription = this._activatedRoute.params.pipe(
tap (params => {
console.log('params = ', params);
}),
switchMap(params => {
return this.service.getItems(params.paramOne);
})
).subscribe(items => {
// push to array
});
}
我试过在开关映射中放置一个 if
语句,但它产生了一个未定义的流错误。
只需使用 filter rxjs 运算符。如果未提供参数,控制将不会传递给管道中的下一个操作员。
你的代码会像这样修改
queryAndSubscribe(){
this._subscription = this._activatedRoute.params.pipe(
tap (params => {
console.log('params = ', params);
}),
filter(params=>params.paramOne),
switchMap(params => {
return this.service.getItems(params.paramOne);
})
).subscribe(items => {
// push to array
});
}
我有以下查询。如果 URL 参数 (paramOne) 存在,是否可以只执行此操作?
queryAndSubscribe(){
this._subscription = this._activatedRoute.params.pipe(
tap (params => {
console.log('params = ', params);
}),
switchMap(params => {
return this.service.getItems(params.paramOne);
})
).subscribe(items => {
// push to array
});
}
我试过在开关映射中放置一个 if
语句,但它产生了一个未定义的流错误。
只需使用 filter rxjs 运算符。如果未提供参数,控制将不会传递给管道中的下一个操作员。
你的代码会像这样修改
queryAndSubscribe(){
this._subscription = this._activatedRoute.params.pipe(
tap (params => {
console.log('params = ', params);
}),
filter(params=>params.paramOne),
switchMap(params => {
return this.service.getItems(params.paramOne);
})
).subscribe(items => {
// push to array
});
}