httpClient при ошибке обновляет URL в Angular - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь использовать httpClient в Angular для выполнения вызовов API.Вот мой код, где я делаю вызов API.

Это мой httpPost метод в authService:

this.authService.httpPost("/api/Users/requestNew", payload).subscribe(
  (data) => {
    console.log(data);
    this.inputForm.reset();
  },
  (error) => {
    let errorMessage = "Ooooops. An error occured. Please refresh and try again.";

  }
);

auth.service.ts

constructor(
  private http: HttpClient, 
  private dataService: DataService
) {}

httpPost(url, payload) {
  return this.http.post(
    this.url_base + ":" + this.port + url,
    payload, {
      headers: new HttpHeaders({
        "Content-Type": "application/json",
        Authorization: localStorage.getItem("id_token")
      })
    }
  );
}

Теперь в полезной нагрузке я намеренно пропускаю поле, в результате чего сервер выдает ошибку.Это ошибка, которую я получаю от сервера:

http://192.168.0.15:3000/api/Users/requestNew 450 (unknown)

Ответ от сервера:

{"error":{"statusCode":"450","message":"Duration is not set.","code":"MISSING_FIELD"}}

Теперь проблема, с которой я сталкиваюсь, заключается в том, что моя страница обновляется автоматически.Это был мой оригинальный URL: http://localhost:4200/user/new, после вызова API, страница обновляется с этим новым URL http://localhost:4200/user/new?.Добавляется дополнительный знак вопроса, и я не уверен, почему страница обновляется.Это не должно быть обновлено, поскольку нигде в моей логике я не написал так.

Редактировать

У меня есть formGroup

inputForm: FormGroup;
durationsControl: FormControl = new FormControl(null, [
  Validators.required
]);

ngOnInit(){
    this.inputForm = new FormGroup({
      duration: this.durationsControl,
      //more controls
    });
}

при изменении выпадающего списка я удаляю этот элемент управления:

valueCHanged(e) {
  const type = e.value;
  if (type === "One") {
    this.durationDiv.nativeElement.style.display = "none";
    this.inputForm.removeControl("duration");

  } else {
    this.durationDiv.nativeElement.style.display = "block";
    this.inputForm.addControl("duration", this.durationsControl);
  }
}

Если я не удаляю элемент управления продолжительностью (this.inputForm.removeControl("duration");), то он работает отлично.Как это изменение приводит к обновлению страницы?

Edit1 Я удалил элемент управления duration из ngOnInit():

ngOnInit(){
        this.inputForm = new FormGroup({
          // duration: this.durationsControl, ---> removed this
          //more controls
        });
    }

Теперь он работает нормально истраница не обновляется.Но я до сих пор не могу понять причину.

...