Heute versuche ich meine eigene Anmerkung zu machen, um es in Angular2 Projekt zu verwenden. Diese Annotation muss eine Body-Klasse für eine bestimmte Komponente hinzufügen.Eigene Angular2 Annotation schreiben
Also, ich habe auf Angular Quellcode suchen, aber es ist so schwer zu sehen, wo und wie Annotation erstellt wurde.
Im Moment habe ich das versucht:
export function BodyClass(classes: any): ClassDecorator{
classes = classes || {};
if(typeof classes === 'string'){
classes = {classes};
}
return function changeBodyClass(){
console.log('ici');
}
}
Und meine Komponente:
import {Component} from "angular2/core";
import {RouterOutlet} from "angular2/router";
import {BodyClass} from "../core/annotations/body_class";
@Component({
selector: 'my-component',
template: `
<router-outlet></router-outlet>
`,
})
@BodyClass('test')
export class MyComponent{
}
Meine Konsolenprotokoll in der Anmerkung korrekt gefeuert wurde, aber ich will "DOM" verwenden, Klasse von angular2/src/platform/dom/dom_adapter
, um meine Klassen hinzuzufügen, aber DOM in undefined, wenn auf der Konsole log es (nicht zu instanziieren).
Die DOM-Klasse funktioniert jedoch direkt in meiner Komponente. Ich füge Klassen in ngOnInit Funktion hinzu und entferne sie auf ngOnDestroy.
Aber ich möchte dieses Verhalten auf vielen Komponenten, und ich denke, eine neue Anmerkung ist der beste Weg.
Vielleicht haben Sie eine bessere Idee dafür? Oder um mit der DOM-Klasse an einer Anmerkung zu arbeiten?
Danke!
Hmm danke Thierry. Ich werde deinen Plunkr mit deiner Erklärung überprüfen, und ich werde zurück sein;) – PallMallShow