Api post call не работает при использовании Angular 4 - PullRequest
0 голосов
/ 02 мая 2020

Я работаю в angular 4, используя web api 2, мой почтовый звонок не работает, не достигает api. Проблема в том, что это даже не дает мне ни единой ошибки. Вот мой код

 registerUser() {
    this.confirmPasswordMessage = false;
    if (this.registerForm.valid) {
      this.confirmPasswordMessage = false;
         if (this._registerModel.Password.trim() !== this._registerModel.ConfirmPassword.trim()) {
             this.confirmPasswordMessage = true;
             this._progressBar.done();
             return false;
        }
        const _data = JSON.stringify(this._registerModel);
        this._apiService.postCall('Account/Register', _data).subscribe(resp => {
        }, error => () => {
          console.log(error); }, () => {
          });
    } else {
        return false;
    }
  }

Вот мой сервисный код API.

public postCall<T>(apiUrl: any, itemName: any): Observable<T> {
    const _options = { headers: new HttpHeaders({
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + localStorage.getItem('access_token')
      }
    )};
      return this.http.post<T>(this.actionUrl + apiUrl, itemName, _options);
  }

Вот мой json Я прохожу. Когда я запускаю этот json через почтальона, он попадает в API. Но я не понимаю, почему он не работает с приложением angular.

"{"FirstName":"Kamran","LastName":"Khan","Email":"kamrankhan473@gmail.com","UserName":"kamrankhan","Password":"Kamran@786","ConfirmPassword":"Kamran@786"}"

Нет ничего плохого в том, что API работает нормально. Я тестировал с помощью почтальона.

1 Ответ

0 голосов
/ 02 мая 2020

Я вижу несколько проблем.

  1. Удалите return false из условия if. Он возвращается из функции до выполнения HTTP-запроса.
  2. Блок else является избыточным. Функция будет возвращаться в любом случае независимо от того, было ли утверждение if истинным или нет.
  3. Удалите JSON.stringify(). Вам нужно отправить JSON, а не строку.
  4. Добавьте начальный sla sh к URL. Заменить 'Account/Register' на '/Account/Register'.
  5. Ошибка в определении функции обратного вызова с ошибкой. Здесь error - параметр для функции. Вы не можете определить функцию вида error => () => {}.
  6. Переменная типа c generi <T> в сервисной функции является избыточной. Он здесь не используется.

Попробуйте следующее

Компонент

registerUser() {
  this.confirmPasswordMessage = false;
  if (this.registerForm.valid) {
    this.confirmPasswordMessage = false;
    if (this._registerModel.Password.trim() !== this._registerModel.ConfirmPassword.trim()) {
      this.confirmPasswordMessage = true;
      this._progressBar.done();
      // no `return false;` here
    }
    this._apiService.postCall('/Account/Register', this._registerModel).subscribe(
      resp => { console.log(resp); }, 
      error => { console.log(error); }, 
      () => { console.log('complete'); }
    );
  }
}

Сервис

public postCall(apiUrl: any, itemName: any): Observable<any> {
  const _options = { 
    headers: new HttpHeaders({
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + localStorage.getItem('access_token');
    }
  )};
  return this.http.post(this.actionUrl + apiUrl, itemName, _options);
}

Если вы начиная с Angular, я бы рекомендовал сначала go через Angular учебник . В нем представлены основные c концепции Angular.

...