У меня есть следующий блок кода, который должен создать запись в БД.
createRole(role: RoleCreateModel): Observable<RoleCreateModel> {
if (role) {
return this.http
.post<RoleCreateModel>(`${this.roleUrl}roles`, JSON.stringify(role), constants.httpOptions)
.pipe(
tap(_ => this.apiHelper.notify('Role successfully created!', 'SUCCESS')),
catchError(this.apiHelper.handleError('Method: createRole', 'FAIL'))
);
}
}
Вышеуказанный метод вызывается следующим методом:
const subscription: Subscription = this.rolesService.createRole(newRoleData).subscribe(res => {
subscription.unsubscribe();
});
При ошибке происходит из-за какого-то бизнес-правила в бэкэнде, возвращается код состояния HTTP 500, который, по-видимому, неправильно обрабатывается первым способом, описанным выше.
core.js:6014 ERROR TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
at subscribeTo (subscribeTo.js:40)
at subscribeToResult (subscribeToResult.js:7)
at CatchSubscriber.error (catchError.js:38)
at TapSubscriber._error (tap.js:56)
at TapSubscriber.error (Subscriber.js:55)
at MapSubscriber._error (Subscriber.js:75)
at MapSubscriber.error (Subscriber.js:55)
at FilterSubscriber._error (Subscriber.js:75)
at FilterSubscriber.error (Subscriber.js:55)
at MergeMapSubscriber.notifyError (OuterSubscriber.js:7)
Какой должен быть правильный подход для решения этой проблемы?