在 class 中使用 Injector.resolveAndCreate 注入路由器
Inject Router using Injector.resolveAndCreate inside a class
是否可以使用 Injector.resolveAndCreate() 注入路由器?
import {ExceptionHandler, Injectable, Inject,Injector} from 'angular2/core';
import {Router,ROUTER_PRIMARY_COMPONENT} from 'angular2/router';
@Injectable()
export class MyExceptionHandler implements ExceptionHandler{
constructor(public router: Router) { }
call(error, stackTrace = null, reason = null) {
console.log("ERROR >> " + error);
console.log("STACKTRACE >> " + stackTrace);
console.log("REASON >> " + reason);
let injector: any = Injector.resolveAndCreate([Router]);
let router: Router = injector.get(Router);
router.navigateByUrl('/error');
}
}
出现异常:令牌路由器主要组件实例化期间出错! (e -> Router -> RouteRegistry -> Token RouterPrimaryComponent).
当然,如果您使用已注册 ROUTER_PROVIDERS
的注入器,但您通常不需要 a Router
实例,但 the Router
实例 - 应用程序中使用的实例。为此,您需要使用与 Angular 应用程序相同的 Injector
。
这可能就是您要找的东西
是否可以使用 Injector.resolveAndCreate() 注入路由器?
import {ExceptionHandler, Injectable, Inject,Injector} from 'angular2/core';
import {Router,ROUTER_PRIMARY_COMPONENT} from 'angular2/router';
@Injectable()
export class MyExceptionHandler implements ExceptionHandler{
constructor(public router: Router) { }
call(error, stackTrace = null, reason = null) {
console.log("ERROR >> " + error);
console.log("STACKTRACE >> " + stackTrace);
console.log("REASON >> " + reason);
let injector: any = Injector.resolveAndCreate([Router]);
let router: Router = injector.get(Router);
router.navigateByUrl('/error');
}
}
出现异常:令牌路由器主要组件实例化期间出错! (e -> Router -> RouteRegistry -> Token RouterPrimaryComponent).
当然,如果您使用已注册 ROUTER_PROVIDERS
的注入器,但您通常不需要 a Router
实例,但 the Router
实例 - 应用程序中使用的实例。为此,您需要使用与 Angular 应用程序相同的 Injector
。
这可能就是您要找的东西