2017-04-03 12 views
6

Say importujemy jeden kątowego modułów Materiał:Zastąpić komponenty, takie jak usługi?

providers:[], 
imports : [MaterialInput] 

Wewnątrz MaterialInput, jest składnikiem stosowanym nazwie: MaterialInputComponent

Z jakichś powodów chcę, aby zastąpić ten składnik z własną

So Chcę móc powiedzieć:

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

Wiem, że możemy przesłonić serwis Tak, ale czy można to zrobić również dla komponentów lub dyrektyw?

UPDATE: ja nie szukam dziedziczenia komponentów, co chcę jest użycie coś jak Material Module ale czasami chcę zastąpić niektórych to komponenty zachowań, jak zrobić z usług.

odczuwalna:

Jeśli jest to oryginalny kod za składnik MaterialInput, co jest w moim modułu węzła.

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

i mam podobna klasa jak:

@Component({}) 
    export class OverrideMaterialInputComonent{ 

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

I powiedzieć mi importowania MaterialInputModule dołkowe

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

Czy to jest wykonalne?

+0

Która wersja kątowa 2 używasz? Dziedziczenie komponentów jest dostępne w Angular 2.3 –

Odpowiedz

-1

można wykorzystywać dla dekoratorów, że można spojrzeć na przykład poniżej jsfiddle

Overriding components 

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

+0

Proszę wstawić tutaj odpowiedni kod, zamiast linku, który może w przyszłości zginąć. –

+0

@peeskillet Ten kod jest tworzony przeze mnie i nie będzie już w przyszłości martwy –

+0

@mohanrathour jest tym AngularJS? Moje pytanie jest w Angular2 – Milad