Исследуйте активированные наблюдаемые значения с помощью операторов rxjs - PullRequest
0 голосов
/ 11 ноября 2018

У меня довольно простой запрос: Я хотел бы исследовать наблюдаемые объекта activRoute (как paramMap, так и queryParamMap) - я хотел бы установить переменные компонента в соответствии с их результатами. Попытка сделать это с использованием операторов rxjs pipe и flatMap, но не смогла привести к успеху. Смотрите мой код:

param1: number;
param2: string;


ngOnInit() {
  this.activatedRoute.paramMap.pipe(
    flatMap(params => {
      this.param1 = +params.get(<name Of Param>);
      return this.activatedRoute.queryParamMap;
    }),
    flatMap(queryParams => {
      this.param2= queryParams.get(<name of query param>);
    })
  ).subscribe(result => /*no need to do anything*/);

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Если вы всегда хотите получить последнее значение обоих значений, используйте объединение.

combineLatest(
    this.activatedRoute.paramMap,
    this.activatedRoute.queryParamMap
).subscribe( ([paramMap, queryParamMap]) =>
    // do stuff here
);
0 голосов
/ 11 ноября 2018

На самом деле вы должны использовать switchMap вместо mergeMap, так как вам не нужен результат всех наблюдаемых в конце.

param1: number;
param2: string;

ngOnInit() {
  this.activatedRoute.paramMap.pipe(
    switchMap(params => {
      this.param1 = +params.get(<name Of Param>);
      return this.activatedRoute.queryParamMap;
    }),
    map(queryParams => {
      this.param2= queryParams.get(<name of query param>);
    })
  ).subscribe(result => /*no need to do anything*/);
...