Angular - 结合 params 和 queryParams observables

标签 angular angular-observable

我怎样才能将这些可观察到的东西合二为一?它们具有相同的功能。

this.sub = this.route.params.subscribe((params: any) => {
    // functionality
});

this.sub = this.route.queryParams.subscribe((params: any) => {
    // same functionality   
});

最佳答案

您可以使用 combineLatest这样做:

import { ActivatedRoute } from '@angular/router';

import { combineLatest } from 'rxjs';

// ...

class MyComponent {

  constructor(private route: ActivatedRoute) { }

  ngOnInit() {

    const params = this.route.params;
    const queryParams = this.route.queryParams;

    combineLatest(params, queryParams, (params, qparams) => ({ params, qparams }))
      .subscribe(allParams => console.log(allParams.params, allParams.qparams));
  }

}

params 和 qparams 都是以属性名作为参数名,以值作为值的对象。所以对于一条路线:

 RouterModule.forRoot([{
  path: 'test1/:id',
  component: Test1Component
}])

带参数

http://localhost:4200/test1/paramvalue?qparam=qpvalue

所有参数将是

{ 
  params: { 
     id: "paramvalue" 
    },
  qparams: { 
     qparam: "qpvalue" 
    } 
 }

关于Angular - 结合 params 和 queryParams observables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45451389/

相关文章:

javascript - d3 v4 TypeScript DefinitelyTyped Angular2 线与 X 轴上的 ScaleTime

java - Post请求中传递文件和Json数据

javascript - 将第一项订阅数据传递给服务

javascript - Angular 5 - 可观察的返回错误无法读取未定义的属性

angular - 如果满足特定条件,RXJS 停止 Observable 链的传播

angular - NgRx: 得到 'You provided ' undefined' where a stream is expected.'当调用有效的完整 Action 时

angular - 使用angular提交后如何获取所选 ionic 单选按钮的值

css - Angular 混合不同的 [ngClass] 表达式

javascript - 插值将应用于所有 ngfor 元素的范围文本内容

angular - rxjs observable.interval();在浏览器中抛出不是函数异常