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
    });
}