angular - ngx-toastr 错误在用于登录的 else 语句中不起作用

标签 angular toast toastr

我正在我的 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/

相关文章:

javascript - Angular/Typescript/Firestore - 如何在 if 语句中返回可观察值

angular - automl 将数据导入数据集 发现错误列表 : 1. 字段:名称;消息:必填字段无效

push-notification - Windows Phone 在点击 Toast 通知时导航到应用程序中的特定页面

javascript - toastr.js : How to override default parameters for entire project

javascript - 当用户升级时如何应用toastr?

css - Angular Material 表没有响应

android - 如何提前终止 Toast 消息?

java - 在另一个 toast 替换它之前,如何确保 toast 在屏幕上显示特定时间?

javascript - 如何在新的 toastr 出现时隐藏通知

html - 组件样式不应该依赖于应用程序的其余部分?