2017-11-14 5 views
-1

Der folgende Code ermöglicht es mir, eine @Test()10 zu meiner Komponente hinzuzufügen, aber ich muss einen Befehl zum ngOnInit-Hook hinzufügen und es ersetzt derzeit den Hook innerhalb der Komponente.Angular Property Decorator fügt den Lebenszyklus-Haken der Komponente hinzu?

function Test(value:any) { 

    return function(target: any, propertyKey: string | symbol) { 

    target.ngOnInit =() => { 
     console.log("This replaces the component's hook") 
    } 

    } 
}  

Wie füge ich einfach hinzu?

Antwort

1

Dekoratoren sind eigentlich nur Funktionen, Ein Methoden-Dekorator wird mit dem Wert der Methode, die er schmückt, aufgerufen, und ein Klassen-Dekorator wird mit der zu dekorierenden Klasse aufgerufen.

Below Dekorateur geht einfach nur um die Klasse zu der Konsole anzumelden:

function Console(target) { 
    console.log('Our decorated class', target); 
} 

Das Ziel wird in der Tat die Klasse, die wir dekorieren, was bedeutet, können wir nun jede Klasse mit unseren Dekorateur dekorieren und sehen es ausgegeben wird, in der Konsole:

@Console 
class ExampleClass { 
    constructor() { 
    console.log('Yo!'); 
    } 
} 

diese Entnommen link to detail decorator. Und es gibt Tonnen von Beispiel in Google verfügbar.

Ich hoffe, es hilft.

+0

Danke, auf jeden Fall. Gibt es eine Möglichkeit, den Lebenszyklus-Haken der Komponente zu ergänzen? –

+0

Ich habe nicht viel darüber gelesen. Sie können diesem Dokument folgen. es gibt auch viele Bibliotheken, die in Git verfügbar sind, sie haben diese Dekorationen erstellt. aber du musst mehr suchen, um dorthin zu gelangen –

Verwandte Themen