ngx-toastr错误在else语句中不起作用以进行登录

时间:2018-02-10 22:31:11

标签: angular toast toastr

我在Angular登录页面上实现了ngx-toastr。出于某种原因,成功消息有效,但错误并不存在。我尝试在成功的登录语句中使用错误消息,但它有效,但它不会在失败的登录语句中显示。我的代码(底部的登录方法):

table_array

似乎它应该是一个显而易见的事情,但我也尝试过把它放在我的服务中,它仍然无法正常工作。我已经尝试更改我的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) } }); } } 以将错误放在第一位等等,但没有。好奇是否有人遇到过这种情况,或者是否有一些我在这里遗漏的明显事物?

编辑:如果好奇,请使用Angular v.5。

1 个答案:

答案 0 :(得分:1)

因此,只要您的服务器返回401错误,您将永远不会进入result => { ... }块,因为它将被处理为错误。按以下方式调整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)
      });
}

它会起作用!