Я учусь Angular. Я создал виджет. Я использую primeng
компонент, то есть p-overlaypanel
. Панель открывается, когда я нажимаю на поле ввода. У меня есть две кнопки Apply
и Cancel
внутри самой оверлейной панели. Я хочу, чтобы этот оверлей закрывался, когда я нажимал кнопку отмены. Вот это stackblitz . А вот и мой код.
timeselector.component. html
<div class="timeselector">
<p-overlayPanel class="timeselector-overlay" #op>
<div class="timeselector-panel">
<p>Time selector</p>
<br />
<div>
<button (click)="closeTimeselector($event, op)">
Cancel
</button>
<button>
Apply
</button>
</div>
</div>
</p-overlayPanel>
</div>
<div (click)="op.toggle($event)">
<input type="text">
</div>
И timeselector.component.ts
import { ... } from '@angular/core';
@Component({
...
})
export class TimeselectorComponent implements OnInit {
timeselectorOpen = false;
constructor() {}
ngOnInit(): void {}
closeTimeselector(event, element) {
if (this.timeselectorOpen) {
element.hide(event);
this.timeselectorOpen = false;
}
console.log("closer called");
}
}
Одним из возможных решений является использование:
<button (click)="op.hide()">
Cancel
</button>
Но я не могу этого сделать, потому что мне нужно выполнить какое-то задание по очистке и flu sh некоторые значения, когда этот виджет закрыт.
Вызвана функция, которую я проверил на консоли. Но наложение не рушится обратно. Вы можете напрямую go к стеку бликов. Пожалуйста, поправьте меня.