我正在我的 Angular 登录页面上实现 ngx-toastr。由于某种原因,成功消息有效,但错误消息无效。我尝试在成功的登录语句中使用错误消息,并且它有效,但它没有显示在失败的登录语句中。我的代码(登录方法在底部):
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { AuthService } from '../auth.service';
import { Router } from '@angular/router';
import { ViewContainerRef } from '@angular/core';
import { ToastrService } from 'ngx-toastr';
@Component({
selector: 'app-login-modal',
templateUrl: './login-modal.component.html',
styleUrls: ['./login-modal.component.css']
})
export class LoginModalComponent implements OnInit {
//Hold user data from form to send to Mongo
user = {
email: '',
password: ''
};
constructor(
private session: AuthService,
private router: Router,
public vcr: ViewContainerRef,
private toastr: ToastrService
) {
}
ngOnInit() {
}
showError() {
this.toastr.error('Username and/or password incorrect.');
}
showSuccess() {
this.toastr.success('Success!');
}
login() {
this.session.login(this.user)
.subscribe(result => {
if (result === true) {
//login successful
this.router.navigate(['/']);
this.showSuccess();
} else {
//login failed
this.showError(); <--DOESN'T WORK
console.log('result not ok', result)
}
});
}
}
看起来这应该是一件显而易见的事情,但我也尝试将它放入我的服务中,但它仍然不起作用。我尝试更改我的 else
来将错误放在第一位,等等,但什么也没有。好奇是否有人遇到过这个问题,或者我是否遗漏了一些明显的东西?
编辑:如果好奇,请使用 Angular v.5。
最佳答案
因此,只要您的服务器返回 401 错误,您就永远不会进入 result => { ... }
block ,因为它将被视为错误处理。按以下方式调整您的 login()
函数
login() {
this.session.login(this.user)
.subscribe(result => {
//login successful
this.router.navigate(['/']);
this.showSuccess();
}, error => {
//login failed
this.showError();
console.log('result not ok', result)
});
}
它会起作用的!
关于angular - ngx-toastr 错误在用于登录的 else 语句中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48726259/