Мне трудно точно сказать, в чем проблема (поскольку я не знаю, как Angular обрабатывает это за кулисами), но я думаю, что все сводится к тому, как обрабатывать поток, который генерирует ошибки.
const obsErr$ = throwError('err');
function intercept (src) {
return src
.pipe(
catchError(v => {
return of('err caught in int1: ' + v);
})
)
}
function intercept2 (src) {
return src
.pipe(
catchError(v => {
return of('err caught in int2: ' + v);
})
)
}
Случай 1
obsErr$
.pipe(
intercept,
intercept2,
)
.subscribe(console.log) // err caught in int1: err
Ошибка будет обнаружена только один раз в первом перехватчике.
Случай 2
obsErr$.pipe(intercept)
.subscribe(v => console.log('i1', v))
obsErr$.pipe(intercept2)
.subscribe(v => console.log('i2', v))
Здесь каждый перехватчик будет иметь свой собственный источник, а также свою собственную ошибку, которую нужно отловить.
Надеюсь, это каким-то образом поможет.
StackBlitz .