Причина, по которой вы видите [объект Object], заключается в том, что вы передаете весь HttpErrorResponse, который является объектом. Ваш шаблон компонента оповещения будет отображаться правильно, если он не является объектом.
Вы можете изменить способ отправки формы входа в систему следующим образом
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.loginForm.invalid) {
return;
}
this.loading = true;
this.authenticationService.login(this.f.username.value, this.f.password.value)
.pipe(first())
.subscribe(
data => {
this.router.navigate([this.returnUrl]);
},
error => {
this.alertService.error(error.message);
this.loading = false;
});
}
пожалуйста, измените метод отправки компонентов реестра следующим образом
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.loginForm.invalid) {
return;
}
this.loading = true;
this.authenticationService.login(this.f.username.value, this.f.password.value)
.pipe(first())
.subscribe(
data => {
this.router.navigate([this.returnUrl]);
},
error => {
this.alertService.error(error.message);
this.loading = false;
});
}
то, что я сделал, передало поле сообщения из ответа об ошибке. если вы хотите иметь logi c для различных кодов ошибок http, вы можете получить его здесь и передать строку сообщения методу ошибки на основе кода ошибки. пожалуйста, попробуйте, если вы хотите обработать код ошибки
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.loginForm.invalid) {
return;
}
this.loading = true;
this.authenticationService.login(this.f.username.value, this.f.password.value)
.pipe(first())
.subscribe(
data => {
this.router.navigate([this.returnUrl]);
},
error => {
if(error.staus === 403){
this.alertService.error("You are not authorized");
}else{
this.alertService.error("Something went wrong");
}
this.loading = false;
});
}
}
, если вы хотите отобразить ошибку, как она есть, измените шаблон компонента оповещения следующим образом
<div *ngIf="message" [ngClass]="{ 'alert': message, 'alert-success': message.type === 'success', 'alert-danger': message.type === 'error' }">{{message.text |json}}</div>