2017-03-07 14 views
2

私は次のBaseComponentを持っています。ベースクラスの角2 - 継承プロバイダ

@Component({ 
    providers: [PresetService, CollectionService, RecordService] 
}) 
export class BaseComponent{ 
    constructor(private collectionService:CollectionService, private recordService:RecordService, private presetService:PresetService){ 
    } 
} 

は、今の子供たちのすべては、プロバイダとそれのインスタンスを継承する必要があります

を私は次のBaseComponentを持っています。

@Component({ 
}) 
export class ChildComponent extends BaseComponent{ 
    constructor(){ 
     super() 
    } 
} 

私は子供からスーパーを呼び出す必要があるので、それは可能ではないようです。だから私は、子からベースにプロバイダのインスタンスに渡す必要があります。親がインスタンスを提供することは可能でしょうか?

答えて

1

https://github.com/angular/angular/commit/f5c8e09

デコレーター:

1)

2)のみ、各種類の最後のデコレータを使用 祖先最初の順番でクラスのデコレータとその親を一覧表示(例: @Component/...)

コンストラクタパラメータ:クラスが親クラスから継承し、 はコンストラクタを宣言せず、親クラス コンストラクタを継承し、親クラスのパラメータメタデータを継承します。

ライフサイクルフック:通常のクラス継承モデルに従うと、 が子クラスに上書きされない場合でも、 親クラスのライフサイクルフックが呼び出されます。

としては、使用する可能性が回避

const baseComponentProviders = [PresetService, CollectionService, RecordService]; 

@Component({ 
    providers: baseComponentProviders 
}) 
class BaseComponent { 

} 
@Component({ 
    providers: baseComponentProviders 
}) 
export class ChildComponent extends BaseComponent{ 
    constructor(){ 
     super() 
    } 
} 
関連する問題