Anwenden einer css-Klasse zu einer Komponente element, wenn es ist geschaffen durch router-Steckdose?
Habe ich DOM, der ungefähr so aussieht:
<app>
<router-outlet></router-outlet>
<project>...</project>
</app>
wo project
element wird eingefügt, indem Sie den router.
Wie füge ich eine Klasse auf dieses element?
InformationsquelleAutor Kugel | 2016-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie wollen immer die Klasse angewendet, um diese Komponente verwenden, können Sie
host
in Ihre Komponenten-Metadaten:Ergibt:
<router-outlet class="...">...
funktioniert nicht :/was ist, wenn ich möchte die Klasse für alle Komponenten weitergeleitet?
zur Verdeutlichung: nachdem Sie dies getan haben, müssen Sie hinzufügen von Stil zu Stil.css... zumindest für mich, es würde nicht funktionieren, indem man es in die ein Elternteil oder ein Kind.
ist wirklich alt, ich weiß), aber siehe meine Antwort unten, um zu sehen, wie Sie dies für alle Komponenten.
InformationsquelleAutor drewmoore
Den Schlüssel /tiefen -/ Stichwort:
Dies funktioniert ohne zusätzliche Konfigurationen.
:host /deep/router-outlet + *
für was auch immer Komponente dynamisch erstellt Winkel-Router.Bearbeitet 2018/3/5:
Seit Winkel-4.3.0 gemacht
/deep/
veraltet, die vorgeschlagene alternative ist::ng-deep
. Und es gab eine lange Diskussion über diese./deep/
ist veraltet. Laut diesem Problem,::ng-deep
könnte es sein, Ersatz für Sie nun.Danke. Ich veränderte meine Antwort.
InformationsquelleAutor Val
Können Sie die adjacent sibling selector
https://developer.mozilla.org/en/docs/Web/CSS/Adjacent_sibling_selectors
aber nur, wenn @drewmoore Ansatz nicht gelten.
InformationsquelleAutor Günter Zöchbauer
Können Sie dies mit einer
HostBinding
, das ist effektiv dasselbe wie die Verwendung derhost
Eigenschaft, die bereits erwähnt wurden, obwohl diese Methode wirft eine TSLint Fehler mit Standard-listing-Regeln.In der Komponente, auf die Sie sich bewerben möchten eine Klasse:
Und dann in deinem root -
styles.scss
- Datei, können Sie die folgenden hinzufügen:InformationsquelleAutor lordchancellor
verwenden Sie die
adjacent sibling selector
und die*
Platzhalter, wählen Sie das element, das unmittelbar nach derrouter-outlet
Stile.css
Funktioniert bei mir (chrome, firefox, ie)
Soweit ich weiß, Eckig Bereiche der Elemente mit einem
[_nghost_c1]
-wie Attribut, wierouter-outlet + *[_nghost_c1]
. Dies ist auch Hinzugefügt, um mein css (ich bin scss zu kompilieren, vielleicht ist das der Grund), und es wird nicht angewendet, um das folgende element bezieht sich auf eine andere Weise.InformationsquelleAutor JED
Wenn Sie brauchen, um eine Klasse bedingt ist, können Sie es hinzufügen, programmgesteuert aus der Komponente:
InformationsquelleAutor adamdport
Dies funktioniert für mich
InformationsquelleAutor Awinash jaiswal
Derzeit, Winkel 6 empfiehlt mir, @HostBindings und @HostListeners anstelle des host-Eigenschaft:
InformationsquelleAutor Dmytro Krekota