Wie Sie ein spezifisches Element innerhalb einer Komponente in der Angular Directive anzielen.
Ich habe eine Komponente mit Selektor "Highlighter". Diese Komponente verfügt über Content-Projekte, die ng-content verwenden.
Es gibt eine Direktive mit Selektor "Textmarker-Eingabe".
Ich glaube, diese Anweisung sollte nur innerhalb der Textmarker-Komponente auf jede Eingabe angewendet werden, aber sie wird auf alle Eingaben in der Anwendung angewendet - was ist falsch?
Plunker: Ссылка
%Vor%Selektoren in Angular unterstützen Kombinatoren nicht:
%Vor% So gewinnt der letzte distinkte Selektor in der Zeichenfolge, der in Ihrem Fall input
ist. Deshalb wird es auf alle Eingaben angewendet.
Eine andere Sache ist, dass sich der projizierte Inhalt nicht innerhalb einer Komponente befindet, auf die projiziert wird. Selbst wenn die von Angular unterstützten Kombinator-Selektoren unterstützt werden, sollte der Selektor highlighter input
immer noch nicht funktionieren.
Die einfachste Lösung wäre, der Eingabe eine Klasse wie folgt hinzuzufügen:
%Vor%und targe diese Klasse im Selektor:
%Vor%Direktiven werden auf alle Selektoren innerhalb des deklarierten Moduls angewendet.
Ein Hinweis, den ich im Angular-Dokument gefunden habe , ist Folgendes:
Angular erlaubt nur das Auslösen von Direktiven für CSS-Selektoren, die keine Elementgrenzen überschreiten.