编写一个指令,它将听取日期选择器外部的点击。 主要观点是检查接收到点击的DOM元素是否具有指令。
指令:
@Directive({
selector: '[clickOutside]'
})
export class ClickOutsideDirective {
constructor(private elementRef: ElementRef) {
}
@Output()
clickOutside = new EventEmitter<Event>();
@HostListener('document:click', ['$event', '$event.target'])
onClick(event: MouseEvent, targetElement: HTMLElement): void {
if (!targetElement) {
return;
}
const clickedInside = this.elementRef.nativeElement.contains(targetElement);
if (!clickedInside) {
this.clickOutside.emit(event);
}
}
}
,并将其添加像这样:
HTML:
<input (clickOutside)="d2.toggle()" class="form-control" placeholder="yyyy-mm-dd"
name="dp" placement="bottom-right" [(ngModel)]="model2" ngbDatepicker
#d2="ngbDatepicker" (click)="d2.toggle()" >
DEMO
肯定..的plunkr工作,但现在我有2个日期选择器。它是同时显示日期选择器..它在http://plnkr.co/edit/gjyNnAG9wqucbyyFgl85?p=preview – gerl
我会看看! – Vega