В последних версиях rxjs вы делаете это, используя трубы:
import { map, catchError } from 'rxjs/operators'
import { of } from 'rxjs'
this.subject.pipe(
map((data) => {
if (!data || !data.value) {
throw new Error('No value, no function...');
} else {
return data;
}
}),
catchError(() => {
console.log('Error')
return of(null) // Be sure to return an observable here! The 'of' function creates an observable out of the argument
})
)
Часть catchError
будет вызвана после того, как в наблюдаемом объекте будет выдана ошибка. Это также полезно для обнаружения любых сетевых ошибок в запросах.
Если вам не нужна обработка ошибок и вам просто нужно, чтобы объект не выдавал значения, тогда вы можете использовать фильтр
import { filter } from 'rxjs/operators'
this.subject.pipe(
filter((data) => {
return (data && data.value)
})
)