angular пост работа 2-й раз или 3-й раз HTTP Post - PullRequest
1 голос
/ 26 марта 2020

Я понимаю, что это проблема с asyn c, но почему у меня есть эта проблема, если я добавил .подписаться, и я жду сообщения

Мой код

public redirectToDelete = (id: string) => {
      this.carService.getId(id).subscribe(result =>
         new alert(this.carService.delete(result)));
   }

и здесь это удалить

deleteUrl = "/car/delete.php";
    delete(car: Car): any {
        this.http.post(this.deleteUrl, car)
        .subscribe(res => {
            return res;
        },
            (error => {
                return error;
            })
        )
        return "";
    }

1 Ответ

2 голосов
/ 26 марта 2020
  • Вам необходимо вернуть наблюдаемое: return this.http.post(this.deleteUrl, car)..... В противном случае вы пытаетесь вызвать subscribe для пустой строки.
  • Вы также должны указать тип возврата вместо any в своих методах, чтобы иметь безопасность типов, что является одним из основных преимуществ использования машинописи.
  • Ваш метод delete должен вернуть наблюдаемое, а не подписку. Верните вызов post напрямую.
  • Используйте перегрузки generi c в HttpClient для обеспечения безопасности типов.
delete(car: Car): Observable<YourTypeHere> {
    return this.http.post<YourTypeHere>(this.deleteUrl, car);
}
import { switchMap } from 'rxjs/operators';


public redirectToDelete = (id: string) => {
      this.carService.getId(id)
          .pipe(switchMap(r => this.carService.delete(r))) // ← switchMap is handy here, alternatively you could call the next service end point in a subscribe and then have a nested subscribe but this makes for messier code IMO
          .subscribe(result => new alert(result));
   }

Как примечание: если вы создаете службу RESTful, которая предлагает удаление, я бы порекомендовал вам установить конечную точку, которая использует глагол http DELETE вместо post.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...