Вы можете сделать это, определив ручной триггер для всплывающего окна и передав поповер в функцию, которая определяет, отключена ли кнопка, чтобы, если кнопка отключена, всплывающее окно можно было открыть программно.
HTML-шаблон
Если вы определите кнопку следующим образом:
<button type="button" class="btn btn-outline-secondary mr-2"
placement="top" ngbPopover="Displayed when button is disabled"
triggers="manual" #p="ngbPopover" [disabled]="isDisabled(p)">
Apply
</button>
triggers="manual"
означает, что она не будет срабатывать автоматически при наведении курсора на кнопку #p="ngbPopover"
- это ссылка на объект NgbPopover [disabled]="isDisabled(p)"
- это функция, которая возвращает логическое значение, указывающее, должна ли кнопка быть отключена или нет.Передача p
(NgbPopover) позволяет программно открывать его в функции isDisabled
.
TypeScript
Функция isDisabled
выглядитнапример:
isDisabled(popover) {
if (this.disabled) {
popover.open();
}
return this.disabled;
}
Это проверяет значение свойства disabled
(это просто логическое значение, которое я определил в файле TypeScript) и откроет всплывающее окно, если оно истинно.Затем он возвращает значение, чтобы шаблон HTML мог включить / отключить кнопку соответствующим образом.
Пожалуйста, посмотрите this StackBlitz для демонстрации.Если вы установите флажок (связанный со свойством disabled
TypeScript, вы увидите, что всплывающее окно отображается, когда кнопка отключена.