Digamos que importamos uno de los módulos de material angular:
providers:[], imports : [MaterialInput] Dentro de MaterialInput , se usa un componente llamado: MaterialInputComponent
Por alguna razón, quiero anular ese componente con el mío propio.
Entonces quiero poder decir:
providers:[ { provide: MaterialInputComponent, useClass : MyOwnInputComponent } ], imports : [MaterialInputModule]Sé que podemos anular servicios como ese, pero ¿se puede hacer también para componentes o directivas?
ACTUALIZACIÓN : no estoy buscando la herencia de componentes, lo que quiero es usar algo como el Material Module , pero a veces quiero anular algunos de los comportamientos de sus componentes, como lo hace con los servicios.
Me gusta :
Si este es el código original detrás del componente MaterialInput, que está en mi módulo de nodo.
@Component({}) export class OriginalMaterialInputComonent{ greet(){ alert('Say Aloo'); } }Y tengo una clase similar como:
@Component({}) export class OverrideMaterialInputComonent{ greet(){ alert('Say yes we can'); } // overriden function }Y digamos que estoy importando el agujero MaterialInputModule
declarations:[ { provide: OriginalMaterialInputComonent, useClass : OverrideMaterialInputComonent } ], imports : [MaterialInputModule]¿Es factible?
Puede usar decoradores para eso. Puede consultar el ejemplo de jsfiddle a continuación.
Overriding components