假设我们导入一个Angular Material模块:
providers:[],imports : [MaterialInput]
在MaterialInput内部,有一个名为:MaterialInputComponent的组件
出于某些原因,我想用自己的方法覆盖该组件
所以我希望能够说:
providers:[ { provide: MaterialInputComponent,useClass : MyOwnInputComponent } ],imports : [MaterialInputModule]
我知道我们可以覆盖这样的服务,但是它也可以用于组件或指令吗?
更新:
我不是在寻找组件继承,我想要的是使用像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]
那可行吗?
您可以使用装饰器,您可以查看下面的jsfiddle示例
Overriding components