2016-03-24 11 views
0

私は、angle2アプリケーション用のいくつかのルートヘルパー関数を書いています。クラスのコンストラクタに注入するのではなく、通常の関数でルータクラスを注入することは可能ですか?私はこの関数内のルータクラスを使用する

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

    } 

ような何かをしようとしています

は、それがどのようにすることができますことが可能である場合は、次のようにルータのクラスを使用することが可能ですか?

答えて

1

角度DIは、コンストラクタに注入するだけのインスタンスのためにそれ自体を作成します。

ただし、インジェクタを使用してインジェクタからルータを要求することができます。

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

... 

let router = appInjector.get(Router); 

完全な作業例では、この議論https://github.com/angular/angular/issues/4112からこのPlunkerを参照してください。

+0

これは私が探しているものです....魅力のように働いています – Jorin