Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angular2中使用可注入服务导航到404页面_Javascript_Angular_Typescript_Navigateurl - Fatal编程技术网

Javascript 如何在angular2中使用可注入服务导航到404页面

Javascript 如何在angular2中使用可注入服务导航到404页面,javascript,angular,typescript,navigateurl,Javascript,Angular,Typescript,Navigateurl,这是我的服务: import { Injectable } from '@angular/core'; import { Http, Response, Headers, RequestOptions, URLSearchParams } from '@angular/http'; import { Observable } from 'rxjs/Observable'; import { Router} from '@angular/router'; @Injectable() expor

这是我的服务:

import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions, URLSearchParams } from '@angular/http';

import { Observable } from 'rxjs/Observable';
import { Router} from '@angular/router';
@Injectable()

export class LoginService {
constructor(private http: Http, public router: Router){}

  login1( loginParams: any ){
    let params = new URLSearchParams();
    params.set('login', loginParams.login);
    params.set('password', loginParams.password);
    let loginUrl = 'api/admins/login';
    return this.http
                .post(loginUrl, params)
                .map(this.extracData)
                .catch(this.handleError);
  }
....
 private extracData( res: Response ){
    // console.log(res.json());
    let body = res.json();
    console.log(body.statusCode);
    if (body.statusCode == 404) {
      this.router.navigate(['/error', 404]);
      // return false;
    }
    return body || {};
  }

  private handleError( error: any ){
    let errMsg = (error.message)?error.message:
        error.status ? `${error.status} - ${error.statusText}` : 'Server error';
        console.log(error.status);
        return Observable.throw(errMsg);
  }

}
然后,当body.statusCode为404时,它不能浏览404页面,但处理handleError函数,所以,我不知道为什么angular2不处理导航函数

这就是我的错误路线

{
    path: 'error/:id',
    component: errorComponent
  }

你的app.module看起来怎么样?@John什么意思?我认为这与app.module无关。当您导航到/出错时,您的app.module中应该有一个与该路径匹配的路径来导航到您的组件display@John是的,我在routes中定义并在app.moudule中声明,我在浏览器中测试,它可以在浏览器中打开,如果我在组件中处理404页面,它可以导航到404页面,但不能在服务中导航!那么我的猜测是404是一个被捕获的错误,你应该使用handleError方法进行导航。在这种情况下,不会调用ExtractData