2017-04-03 9 views
6

は、私たちが角度素材モジュールのいずれかをインポート言う:MaterialInputインサイドサービスのようなコンポーネントを上書きしますか?

providers:[], 
imports : [MaterialInput] 

、名前の使用コンポーネントがあります:私は私自身の

とそのコンポーネントを上書きしたいいくつかの理由からMaterialInputComponent

は、私は言うことができるようにしたい:

providers:[ 
    { 
     provide: MaterialInputComponent, 
     useClass : MyOwnInputComponent 
    } 
], 
imports : [MaterialInputModule] 

私はサービスをオーバーライドすることができます知っているそのようなものですが、コンポーネントやディレクティブにも同様に対応できますか?

UPDATE: 私はコンポーネントの継承のために見ているわけではない、私が欲しいものはMaterial Moduleのようなものを使用することですが、あなたがサービスを行うように時々私は、いくつかのそれのコンポーネントの動作をオーバーライドします。同様

これは私のノードモジュールにあるMaterialInput成分、後ろに元のコードである場合。

@Component({}) 
    export class OriginalMaterialInputComonent{ 
     greet(){ alert('Say Aloo'); } 
    } 

そして、私が持っているような似たクラス:

@Component({}) 
    export class OverrideMaterialInputComonent{ 

     greet(){ alert('Say yes we can'); } // overriden function 
    } 

そして、私は穴MaterialInputModule

declarations:[ 
    { 
    provide: OriginalMaterialInputComonent, 
    useClass : OverrideMaterialInputComonent 
    } 
], 
    imports : [MaterialInputModule] 

をインポートだと言うが、それはなんとかですか?

+0

使用している角度2のバージョンに見ることができますか?コンポーネントの継承はAngular 2.3で利用可能 –

答えて

-1

あなたはそのためのデコレータを使用することができ、あなたは以下のjsfiddle例

Overriding components 

https://jsfiddle.net/mohan_rathour/sqv0jx21/

+0

将来的には死んでしまうかもしれないリンクではなく、関連するコードをここに投稿してください –

+0

@peeskilletそのコードは自分で作成したものであり、将来死んでしまいません –

+0

@mohanrathourはAngularJSですか?私の質問はAngular2である – Milad

関連する問題