Я пытаюсь использовать 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
});
}
Теперь он работает нормально истраница не обновляется.Но я до сих пор не могу понять причину.