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