2016-04-24 11 views
1

@Componentデコレーションにサービス依存関係を挿入する方法はありますか?デコレータの角2依存性注入

@Component({ 
    selector: injectedService.getPrefix() + 'my-component' 
}) 
export class MyComponent { } 

か、されていない場合、それは@Componentをsubsclassと同様の結果を達成するために、サブクラスに依存性を注入することが可能であるかもしれませんか?

答えて

2

更新> = RC.5

@NgModule({ 
    ... 
}) 
export class AppModule { 
    ngDoBootstrap(moduleRef) { 
    appInjector(moduleRef.injector); 
    } 
} 

appInjector実装これは直接Angular2によってサポートされていない

元< = RC.5

下記参照。インジェクタをAngularアプリの外に保存し、@CanActivate()デコレータの回避策として示されているように、https://github.com/angular/angular/issues/4112#issuecomment-153811572にそのインジェクタを保存することができます。 (Plunker example

インジェクタはappInjector

bootstrap(App, [ 
    Auth, 
    HTTP_PROVIDERS, 
    ROUTER_PROVIDERS, 
    provide(LocationStrategy, {useClass: HashLocationStrategy}) 
]).then((appRef: ComponentRef) => { 
    // store a reference to the application injector 
    appInjector(appRef.injector); 
}); 

app-injector.ts

let appInjectorRef: Injector; 
export const appInjector = (injector?: Injector):Injector => { 
    if (injector) { 
     appInjectorRef = injector; 
    } 

    return appInjectorRef; 
}; 

に割り当てられているmain.tsでは、あなたは

appInjector()... 

Thのようなインジェクタへの参照を取得することができますbootstrap()が完了する前にコンポーネントが作成されていれば動作しません。

+0

完璧、よろしくお願いいたします。 –

+0

ng2リリースでこれを行う方法はありますか? – baryo

+0

私は自分の答えを更新しました。 –

関連する問題