3
401エラーまたは403エラーが追加された場合、ログインページにリダイレクトするhttpインターセプターを作ろうとします。インターセプタに問題はありませんが、 "router.navigate"を実行するとエラーが発生します: "未定義のプロパティ 'をナビゲートできません"。httpのインターセプターでログインページにリダイレクトしようとすると403エラーになる
私のhttpインターセプタ:application.Module.ts上
@Injectable()
export class RedirectHttp extends Http {
constructor(protected backend: ConnectionBackend, protected defaultOptions: RequestOptions, private router: Router, private loginUrl: string) {
super(backend, defaultOptions);
}
...
intercept(observable: Observable<Response>): Observable<Response> {
return observable.catch(this.handleError) as Observable<Response>;
}
private handleError(error: any): any {
if (error.status === 401 || error.status === 403 && !error.url.endsWith("/" + this.loginUrl)) {
this.router.navigate([this.loginUrl]);
return Observable.empty();
} else {
return Observable.throw(error);
}
}
}
宣言:
@NgModule({
declarations: [...],
entryComponents: [...],
imports: [
BrowserModule,
routing,
FormsModule,
ReactiveFormsModule,
HttpModule,
],
providers: [
appRoutingProviders,
{provide: Http,
useFactory: (xhrBackend: XHRBackend, requestOptions: RequestOptions, router: Router) => new RedirectHttp(xhrBackend, requestOptions, router, LOGIN.path),
deps: [XHRBackend, RequestOptions, Router]
}
],
bootstrap: [ApplicationApp]
})
export class AppModule {
}
は、私はルータ注入と間違いがあると思いますが、私ドンどこにいるの?