У меня сейчас что-то вроде этого: (myTooltip - это некоторое расширение ngbTooltip, которое позволяет предоставлять контекст)
..component1:
<div [myTooltip]="tip" [myTooltipContext]="{...}">
<ng-template #tip let-param="param">
<tip-component param="param"></tip-component>
</ng-template>
..component2:
<div [myTooltip]="tip" [myTooltipContext]="{...}">
<ng-template #tip let-param="param">
<tip-component param="param"></tip-component>
</ng-template>
..component3:
<div [myTooltip]="tip" [myTooltipContext]="{...}">
<ng-template #tip let-param="param">
<tip-component param="param"></tip-component>
</ng-template>
Вы видите, что это дублирование кода, и я хочу иметь что-то вроде:
<div [myTooltip]="{...}"> // no template reference here and no template in file at all
Попытка написать эту директиву:
export class MyTooltipDirective extends NgbTooltip {
ngOnInit() {
this.ngbTooltip = ???? /*need to provide here TemplateRef */
}
}
Например, в angularjs Я бы поместил шаблон в $ templateCache, что я могу сделать здесь?
На данный момент один вариант Iсм. в некотором корневом файле, добавьте шаблон и поместите его в Службу как поле), так что я могу сделать это.ngbTooltip = SomeService.tempalteRef - но это выглядит очень сложно.
NgbTooltip открывает TooltipWindowComponent, в который он внедряет шаблон, я решил изменить это и вместо этого открыть свой собственный компонент окна. Это решает проблему - но требует некоторой причины дублирования кода закрытых методов в NgbTooltip.