Когда вы вызываете of()
, это создает наблюдаемое, которое испускает ничего, но сразу завершается, потому что ему не было дано никаких аргументов. Проблема в том, что оператор switchMap()
сработает только в ответ на выданное значение.
Следовательно, следующие эффективно заставляют замолчать все ошибки в наблюдаемой.
throwError('ouch').pipe(
catchError(() => of())
).subscribe(()=> {
console.log('I am never printed');
}, ()=> {
console.log('I am never printed');
}, ()=> {
console.log('COMPLETED!'); // this will be printed.
});
В приведенном выше примере catchError()
переходит в пустую наблюдаемую. Ни обратный вызов абонента, ни обратный вызов ошибок не выполняются. Выполняется только полный обратный вызов.
Все операторы, которые существуют после catchError()
, никогда не используются, потому что ничего не генерируется.
Вы можете исправить , выбрав undefined или любое другое значение.
public addItem(item) {
this.itemCollection$ = this.itemService.addItem(item).pipe(
catchError((err) => {
this.logger.error('Couldnt add Item to Collection');
return of(undefined);
}),
switchMap(() => this.itemsService.getItemsByItemId(this.itemId)));
}