Ich entwickle eine App auf Angular 2 und in dieser App muss ich einige Attribute in @Component Decorator dynamisch ändern. Hier ist mein Code:Anmerkungen ändern, bevor Komponente an Angular gesendet wird 2
function componentFactory (directives: any[], template: string) {
let annotations = Reflect.getMetadata('annotations', ComponentBase)
annotations[0].directives = directives
annotations[0].template = template
let metadata = new ComponentMetadata(annotations)
Reflect.defineMetadata('annotations', [ metadata ], ComponentBase)
return ComponentBase
}
Das Problem ist, dass, wenn ich es verwenden (mit einem ComponentResolver) ich diese Fehlermeldung erhalten: „Component‚ComponentBase‘muss entweder‚template‘oder‚templateUrl‘gesetzt.“.
Haben Sie Vorschläge?
Danke :)
Warum brauchen Sie, um dynamisch ändern einige Attribute. –
Danke für Ihre Antwort @pablo. Ich muss Anweisungen in meiner Komponente hinzufügen, ohne zu wissen, welche ich verwenden möchte. Ich habe es geschafft, es funktioniert, aber das ist nicht eine gute Praxis (die gleiche Klasse mehrmals deklariert): Funktion ComponentFactory (Direktiven: any [], Vorlage: String) { @ Component ({ Direktiven: Direktiven, Vorlage: Vorlage, }) Klasse ComponentBase {} return ComponentBase } –
Vielleicht könnten Sie den Component-Router verwenden? –