В HTML шаблоне у меня есть следующая реализация:
<tr sliding>
<td>Field 1</td>
<td>Field 2</td>
<td>
<app-sliding>Field 3</app-sliding>
</td>
</tr>
У меня есть следующая директива:
@Directive({
selector: '[sliding]'
})
export class SlidingDirective {
@HostListener('mouseenter', ['$event'])
public onHover(e: Event): void {
const el = e.target as HTMLElement;
const appSliding = el.querySelector('app-sliding') as AppSlidingComponent;
if (cdSliding) {
appSliding.show();
}
}
}
И следующий компонент:
@Component({
selector: 'app-sliding',
template: `
<ng-content></ng-content>
`
})
export class AppSlidingComponent {
show() {
console.log('yes');
}
}
Мне бы хотелось, чтобы, когда указатель мыши перекрывал <tr>
элемент DOM, директива вызывала метод show()
из AppSlidingComponent
.
Я пытался использовать реализацию @ViewChild, но не смог увидеть дочерний элемент второго уровня.
querySelector
найти элемент DOM, но рассматривается как HTMLElement, а не AppSlidingComponent.
Существует способ взаимодействия с дочерним компонентом из директивы?