HTTP PUT в angular не работает должным образом, но без кода ошибки - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть такой класс:

id: any;

phonenumber: PhoneNumberInterface;

httpOptions = {
    headers: new HttpHeaders({
    'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
    'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
})};

constructor(private route: ActivatedRoute, private httpClient: HttpClient) { }

ngOnInit() {
    this.id = this.route.snapshot.paramMap.get('id');
    this.getPhoneNumber(this.id).subscribe(phonenumber => this.phonenumber = phonenumber);
}

updatePhoneNumber(phonenumber: PhoneNumberInterface): Observable<any> {
    console.log('updatePhoneNumber is called');
    phonenumber.phoneNumberType = 'BLOCKED';
    console.log(phonenumber);
    const url = `http://localhost:8080/phonenumbersmanagement/api/v1/phonenumbers/${this.id}`;

    return this.httpClient.put(url, phonenumber, this.httpOptions).pipe();
}

getPhoneNumber(id: number): Observable<PhoneNumberInterface> {
    const url = `http://localhost:8080/phonenumbersmanagement/api/v1/phonenumbers/${id}`;

    return this.httpClient.get<PhoneNumberInterface>(url).pipe();
}

Обновление происходит, когда я нажимаю на кнопку:

<button (click)="updatePhoneNumber((phonenumber))">Manuell sperren</button>

Основное внимание уделяется updatePhoneNumber () .

Я пытаюсь обновить номер телефона, который является большим объектом в моем приложении для отдыха. Прежде чем я использую метод put (), я выводю переменную phonenumber на консоль. Это прекрасно, но ничего не происходит. Объект не обновляется. И я также не получаю код ошибки. Кто-нибудь знает почему?

Спасибо за каждый ответ!

1 Ответ

1 голос
/ 10 февраля 2020

Это ничего не делает:

 return this.httpClient.put(url, phonenumber, this.httpOptions).pipe();

Как я сказал в комментарии, вам нужно подписаться на наблюдаемое, чтобы http-запрос выполнялся (как вы это делали в ngOnInit).

 return this.httpClient.put(url, phonenumber, this.httpOptions).subscribe(console.log);
...