В основном для всех выпадающих меню, которые я хочу запустить myOpenFunction()
каждый раз, когда NgbDropDown
открывается и запускается myCloseFunction()
каждый раз, когда закрывается выпадающее меню?
Я думал, что смогу написать пользовательскую директиву, расширяющую NgbDropDown, и запустить функцию до и после раскрывающегося списка. что-то вроде этого:
<div myCustomDropdown> <!-- using my own directive instead of ngbDropdown -->
<button ngbDropdownToggle>Toggle dropdown</button>
<div ngbDropdownMenu>
<button ngbDropdownItem>Action - 1</button>
<button ngbDropdownItem>Another Action</button>
</div>
</div>
То, что я до сих пор пробовал, основано на этом здесь
@Directive({
selector: '[myCustomDropdown]'
})
export class DropdownDirective extends NgbDropdown implements OnDestroy {
constructor(_changeDetector: ChangeDetectorRef, config: NgbDropdownConfig, @Inject(DOCUMENT) _document: any,
_ngZone: NgZone, _elementRef: ElementRef<HTMLElement>, _renderer: Renderer2,
@Optional() ngbNavbar: NgbNavbar) {
super(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar);
}
ngOnDestroy() {
super.ngOnDestroy();
}
}
, который выдает ошибку
core.js:6185 ERROR Error: Uncaught (in promise): NullInjectorError: R3InjectorError(TestModule)[NgbDropdown -> NgbDropdown -> NgbDropdown -> NgbDropdown]:
NullInjectorError: No provider for NgbDropdown!