Angular 角度-如何仅在URL参数存在时执行查询

Angular 角度-如何仅在URL参数存在时执行查询,angular,url-parameters,Angular,Url Parameters,我有以下疑问。只有URL参数(paramOne)存在时才能执行此操作吗 我尝试在开关映射中放入if语句,但它会产生未定义的流错误。只需使用过滤器rxjs操作符即可。如果未提供参数,控制将不会传递给管道中的下一个操作员 您的代码将被这样修改 queryAndSubscribe(){ this.\u subscription=this.\u activatedRoute.params.pipe( 轻触(参数=>{ log('params=',params); }), 过滤器(params=>par

我有以下疑问。只有URL参数(paramOne)存在时才能执行此操作吗


我尝试在开关映射中放入
if
语句,但它会产生未定义的流错误。

只需使用过滤器rxjs操作符即可。如果未提供参数,控制将不会传递给管道中的下一个操作员

您的代码将被这样修改

queryAndSubscribe(){
this.\u subscription=this.\u activatedRoute.params.pipe(
轻触(参数=>{
log('params=',params);
}),
过滤器(params=>params.paramOne),
开关映射(参数=>{
返回此.service.getItems(params.paramOne);
})
).订阅(项目=>{
//推送阵列
});

}
只需使用过滤器rxjs操作符即可。如果未提供参数,控制将不会传递给管道中的下一个操作员

您的代码将被这样修改

queryAndSubscribe(){
this.\u subscription=this.\u activatedRoute.params.pipe(
轻触(参数=>{
log('params=',params);
}),
过滤器(params=>params.paramOne),
开关映射(参数=>{
返回此.service.getItems(params.paramOne);
})
).订阅(项目=>{
//推送阵列
});

}
在此.service.getItem()内或在subscribe中放置if语句。如果您想终止该进程,那么还有其他rxjs处理程序可供使用。您查看过激活的路由快照吗?只需使用
filter
操作符。如果@代谢-这样做会产生“您提供了预期流的‘未定义’位置。您可以提供可观察的、承诺的、数组的或可引用的”。这应该比
容易。我需要能够倾听路线的变化。基本上,屏幕的左侧有一些项目,当单击右侧的项目时,这些项目会显示出来。右边的项目是由更改的URL参数(来自单击的项目)定义的,在这个.service.getItem()或subscribe中放置一个if语句。如果您想终止该进程,那么还有其他rxjs处理程序可供使用。您查看过激活的路由快照吗?只需使用
filter
操作符。如果
@代谢-这样做会产生“您提供了预期流的‘未定义’位置。您可以提供可观察的、承诺的、数组的或可引用的”。这应该比
容易。我需要能够倾听路线的变化。基本上,屏幕的左侧有一些项目,当单击右侧的项目时,这些项目会显示出来。右侧的项目由更改的URL参数(来自单击的项目)定义
 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
    });
}