Erro de tempo de execução após manipular 400

Cenário:

O nome de usuário e a senha são autenticados usando a autenticação de token WebApi 2. Se as credenciais estiverem corretas, o token será retornado. Mas, se as credenciais estiverem incorretas, 400 solicitações incorretas serão retornadas. No meu projeto Ionic 2, se eu receber a resposta, navegarei para a próxima página. Se eu receber o erro, mostro minha mensagem de erro personalizada.

Questão:

O problema que enfrento é que, se eu inserir credenciais incorretas pela primeira vez, a mensagem de erro personalizada será exibida. Se eu inserir credenciais incorretas novamente, a mensagem de erro personalizada será mostrada junto com a mensagem de erro iônica.

Aqui está o meu código:

login.ts

  doLogin() {
    if (this.Username !== undefined && this.Password !== undefined) {
      this.loading.present();
      this.authSrv.login(this.Username, this.Password).subscribe(data => {
        this.navCtrl.setRoot('HomePage');
        this.loading.dismiss();
      }, (err) => {
        this.errorMsg("Invalid Username/Password !" + err);
        this.loading.dismiss();
      });
    }
    else
      this.errorMsg("Please enter Username/Password");
  }

auth-service.ts

  login(username, password) {
    let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    let urlSearchParams = new URLSearchParams();
    urlSearchParams.append('username', username);
    urlSearchParams.append('password', password);
    urlSearchParams.append('grant_type', 'password');
    let body = urlSearchParams.toString()
    return this.http.post('http://' + this._api + '/postoken', body, { headers: headers }
    )
      .map(res => res.json())
      .map((res) => {
        if (res !== null) {
          localStorage.setItem('acess_token', res["access_token"]);
          localStorage.setItem('access_type', res["access_type"]);
          localStorage.setItem('expires_in', res["expires_in"]);
          this.loggedIn = true;
        }
        return res;
      });
  }

Screencast:

Erro

Qualquer conselho seria útil.

questionAnswers(1)

yourAnswerToTheQuestion