Dynamische styleUrls im Winkel 2?
Ist es möglich, dynamisch zu injizieren urls zu stylesheets in eine Komponente?
Etwas wie:
styleUrls: [
'stylesheet1.css',
this.additionalUrls
]
oder (Wunschdenken und beachten Sie, dass dies nur fake-code):
export class MyComponent implements dynamicUrls {
ngDynamicUrls() {
this.inject(['anotherStylesheet.css', 'anotherStylesheet2.css']);
}
}
Weil wenn du wirst in der Lage sein zu überschreiben, bestimmte Arten von stylesheet1
ohne Zugriff auf es, wie soll man das tun? Meine einzige Idee ist, dynamische styleUrls
irgendwie, aber ich glaube nicht, dass dies überhaupt möglich ist von dem, was ich finden konnte.
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist möglich, in manchen vielleicht hack Weg hat es bei mir geklappt. Sie können manipulieren Eckig 2-Komponenten-Dekorator erstellen Sie Ihre eigenen und die Rückkehr Eckige Symbol mit Ihren Eigenschaften.
Und in Ihrer Komponente ersetzen der Standard Winkel-2 @ - Komponente durch eine neue.
Habe ich eine Lösung gefunden:
1. Habe ich das geändert styleurls Formatvorlagen in der Komponenten-Dekorator.
2. Ich Kriege meine variable.
3. Ich werde den benötigen Befehl in meinem Lackierer.
In diesem einfachen Beispiel habe ich importiert die environment-variable geändert und die css-string dynamisch.
Ich das gleiche müssen dynamisch injizieren urls zu stylesheets und schließlich zum initialisieren einer Komponente für jede variable css (in meinem Fall 3 verschiedene Stile) mit den leeren Vorlage und verwenden Sie diese in mein app-Komponente mit ngIf Zustand.
Durch die Verwendung der Eigenschaft "Kapselung: ViewEncapsulation.None", der Stil der ausgewählten Komponente wird dann Hinzugefügt, um den header der Seite und ermöglichen, um die richtigen renderer für die ganze Seite.
Ich glaube nicht, können Sie dynamische stylesheet-URLs, weil Sie keinen Zugang zu Ihrer Klasse, Eigenschaft oder Methode in
@Component
Dekorateur.Aber können Sie Ihr Ziel erreichen, indem er dynamische style-Klassen, die in Ihrer Vorlage.
Benutzte ich die stylesheet-Verknüpfung in der html-Vorlage mit ngIf Zustand, es funktionierte für mich.
<body>
). Also, wie können Sie Ihren code binden Sie an dietheme
variable?<head>
Abschnitt.