Я хочу сохранить логику для дочернего компонента внутри него. Однако само событие происходит, когда происходит щелчок от его родительского компонента вниз.
child.component.ts
@HostListener('document:click', ['$event']) onClick(event: MouseEvent) {
// get the parent component tag
const parentComponent = this.eRef.nativeElement.parentNode.parentNode;
for (let i = 0, j = parentComponent.length; i < j; i++) {
if (event.target == parentComponent[i]) {
console.log(parentComponent[i]);
}
}
Я пробовал много вещей, чтобы перебрать список узлов и сравнить click event.target, чтобы увидеть, был ли клик внутри parent
или снаружи, но я не могу перебрать нодлист и не понимаю, почему .
Я попробовал и много других вещей здесь, на репро StackBlitz .
Возможно, есть гораздо лучший способ отслеживать клики снаружи / внутри родительского элемента этого компонента? Кроме того, я не хочу перемещать логику щелчка к родителю, логике там не место, если только она не должна быть.
ИСПРАВЛЕНО: StackBlitz был обновлен всеми моими исследованиями обхода DOM с помощью elementRef.
Также @Ritchie правильно перебрал нодлист и заставил его так работать.