Итак, вот проект StackBlitz , демонстрирующий создание компонента всплывающей подсказки динамического c.
У меня есть одна директива всплывающей подсказки myTooltip
, которая отвечает за создание динамического элемента c компонент всплывающей подсказки при наведении курсора мыши и удаление при отпускании мыши.
constructor(private viewContainerRef: ViewContainerRef,
private resolver: ComponentFactoryResolver) {
this.factory = this.resolver.resolveComponentFactory(TooltipComponent);
}
@HostListener('focusin')
@HostListener('mouseenter')
show(): void {
this.tooltipComp = this.viewContainerRef.createComponent(this.factory);
this.tooltipComp.instance.content = this.tooltipContent;
}
@HostListener('focusout')
@HostListener('mouseleave')
@HostListener('DOMNodeRemovedFromDocument')
hide(): void {
this.tooltipComp && this.tooltipComp.destroy();
}
Затем у меня есть компонент всплывающей подсказки, который принимает переменную content
(значение можно передать из компонента узла). Таким образом, технически вы можете передать что-нибудь компоненту всплывающей подсказки.
@Component({
selector: 'my-tooltip',
templateUrl: './tooltip.component.html',
styleUrls: [ './tooltip.component.css' ]
})
export class TooltipComponent {
name = 'Angular';
content: any;
}
И, наконец, использовать это следующим образом.
<div myTooltip tooltipContent='Hello There!'>
Hover on me
</div>
Конечно, вам придется реализовать указания всплывающей подсказки и CSS logi c поверх него.
https://stackblitz.com/edit/prabhat-angular-tooltip