在函数内部使用Router Class

时间:2016-03-24 16:40:40

标签: angular angular2-routing

我正在为我的angular2应用程序编写一些路由辅助函数..是否可以在正常函数中注入Router类....而不是在类的构造函数中注入它。

我正在尝试做这样的事情

 import {Router} from "angular2/router";
    export function show404()
    {
        var _location=new Location();
        var _router=new Router(.......);
        this._location.replaceState('/');
        this._router.navigateByUrl('/404/');

    }

是否可以像这样使用Router类,如果有可能那么我该怎么办?

1 个答案:

答案 0 :(得分:1)

Angular DI仅注入构造函数,仅用于创建自身的实例。

您可以做的是使用进样器并从进样器请求路由器。

bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
]).then((appRef: ComponentRef) => {
  console.log("booting")
    appInjector(appRef.injector);
});

...

let router = appInjector.get(Router);

有关完整的工作示例,请参阅此Plunker中的https://github.com/angular/angular/issues/4112