2017-04-03 96 views
6

說我們進口的角材料模塊之一:覆蓋組件,如服務?

providers:[], 
imports : [MaterialInput] 

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