Исследуйте активированные наблюдаемые значения с помощью операторов rxjs
У меня довольно простой запрос: я хотел бы исследовать наблюдаемые 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 ответа
Решение
На самом деле вы должны использовать 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*/);
Если вы всегда хотите последнее значение обоих, используйте объединениеЛатест.
combineLatest(
this.activatedRoute.paramMap,
this.activatedRoute.queryParamMap
).subscribe( ([paramMap, queryParamMap]) =>
// do stuff here
);