Свойство «подписка» не существует при ошибке типа «OperatorFunction <{}, {}>» в Angular 7 - PullRequest
0 голосов
/ 13 февраля 2019

при изучении обработки ошибок в Angular Typescript выдает ошибку

Свойство «подписка» не существует для типа «OperatorFunction <{}, {}>» в этом блоке кода в моем компоненте

createPost(post: HTMLInputElement) {
this.service.newPost(post).subscribe(
  response => {
    this.posts.splice(0, 0, post);
  },
  (error: AppError) => {
    if (error instanceof BadInput) {
      // Set form errors and display them next to input fields
      this.form.setErrors(error.originalError);
    } else {
      alert("An unexpected error occurred.");
      console.log(error);
    }
  }
);
}

Сервисный код, возвращающий наблюдаемое, используемое кодом компонента:

newPost(post) {
return (
  this.http.post(this.url, post),
  catchError((error: Response) =>
    error.status === 400
      ? Observable.throw(new BadInput(error))
      : Observable.throw(new AppError(error))
  )
);
}

Мне нужна помощь в устранении ошибки и объяснение того, почему ошибка возникла или каклучше всего добиться обработки ошибок.

1 Ответ

0 голосов
/ 13 февраля 2019

Вы должны использовать оператор pipe, за которым следует оператор map, а затем оператор catchError.Вам нужно будет импортировать оператор карты и оператор catchError из rxjs / operator.Пожалуйста, смотрите ниже:

.pipe(
    mergeMap(resp => {
        // add logic
    }),
    catchError(err => {
        // add handling 
    })
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...