Ich konnte dies nirgends in den Dokumenten finden, aber meine Node.contains() Funktion funktioniert nicht, wenn ich auf etwas innerhalb einer Komponente, die Teil einer übergeordneten Komponente ist, klicken.Funktioniert Node.contains() bei der Arbeit mit Shadow DOM in Angular 2?
Meine Eltern Komponente sieht wie folgt aus:
<div class="body">
<div class="item" *ngFor="let item of sortedItems;">
<cv-checkbox></cv-checkbox>
<cv-svg-icon></cv-svg-icon>
</div>
<div class="drop-zones" *ngFor="let zone of sortedItems.length + 1 | numberToArrayPipe;>
<div class="drop-zone"></div>
</div>
</div>
Wie Sie kann ich zwei Winkelkomponenten in meinem Elternkomponente sehen haben: cv-checkbox
und cv-svg-icon
. Ich habe eine Richtlinie zu meiner Eltern Komponente hinzugefügt, die wie folgt aussieht:
<cv-layer-manager cvClickOutside (clickOutside)="toggleLayerManager()"></cv-layer-manager>
Wo lese ich überprüfen, ob die angeklickt Knoten durch die Mutter wie folgt enthalten ist:
@HostListener('document:click', ['$event']) public onClick(event: MouseEvent) {
const clickedInside = this._elementRef.nativeElement.contains(event.target);
if (!clickedInside) {
this.clickOutside.emit();
}
}
Wenn ich normale HTML-Komponenten klicken alles funktioniert wie erwartet, aber nicht, wenn ich auf eine eckige Komponente klicke. Stimmt es, dass contains nicht innerhalb der Angular Komponente prüft?