Я пишу простое приложение с пользовательским интерфейсом, и мне нужно вызвать API, чтобы получить продукт по идентификатору в компоненте сведений о продукте.Я получаю из параметров маршрута
Обычно я делаю что-то вроде этого:
this.activatedRoute.params
.subscribe(params => {
if (params['primaryKey']) {
this.service.get(params['primaryKey'])
.subscribe(product => {
this.product = product;
});
}
});
И это прекрасно работает, выглядит немного уродливо с этими деревьями подписки.Я хочу использовать больше RxJS, чтобы это выглядело так (консольные журналы только для демонстрации):
this.product$ = this.activatedRoute.params
.pipe(filter(params => {
console.log('in filter', params);
return 'primaryKey' in params;
}),
map(params => {
console.log('in map', params);
return parseInt(params.primaryKey, 10);
}),
switchMap(primaryKey => {
console.log('in switch map', primaryKey);
return this.service.get(primaryKey);
}));
Но это не сработает, пока я не подпишусь на него в конце (это даже не 'вызвать любой из журналов консоли) ... почему?