如何在角度6中手动关闭ng-pick-datetime选择器?

时间:2019-03-04 07:44:25

标签: html angular angular6

我正在使用ng-pick-datetime选择器作为对话模式。它工作正常,但是如果我打开它并移动到其他路径而不关闭它,我的应用程序将挂起。因此,请建议我在移至另一条路径之前如何关闭选择器。我试图使用ViewChild获得可访问性,但是它不起作用。

<button type="button" class="list-group-item list-group-item-action" [ngClass]="{'active': selectedItem == devices.name}" [owlDateTimeTrigger]="dt5">
                        <!-- [ngClass]="status ? 'active' : 'light'" -->
                        {{devices.name}}
                        <!-- To show datetime picker -->
                        <input [owlDateTime]="dt5" [(ngModel)]="selectedDateTime" class="hideInput" [min]="minDate" [max]="maxDate"
                        (dateTimeInput)="getHistory(devices.imei_no,devices.remaining_days_to_expire,devices.name)">
                        <owl-date-time [pickerMode]="'dialog'" #dt5></owl-date-time>                         
                    </button>

@ViewChild('dt5') calendarView: ElementRef;

ngOnDestroy(): void {
  this.calendarView.nativeElement.visibility = 'hidden' //throwing error cannot set property of undefined element
}

1 个答案:

答案 0 :(得分:0)

如果您在选择器上使用* ngIf =“”属性,则当您导航到另一条路线时,该变量将被销毁,这意味着您的选择器将不再显示(也许有另一种更有效的方法,但这是解决方案我生产的),请尝试以下方法:

在模板方面

<ng-template [ngIf]="showPicker"><button type="button" class="list-group-item list-group-item-action" [ngClass]="{'active': selectedItem == devices.name}" [owlDateTimeTrigger]="dt5">
                        <!-- [ngClass]="status ? 'active' : 'light'" -->
                        {{devices.name}}
                        <!-- To show datetime picker -->
                        <input [owlDateTime]="dt5" [(ngModel)]="selectedDateTime" class="hideInput" [min]="minDate" [max]="maxDate"
                        (dateTimeInput)="getHistory(devices.imei_no,devices.remaining_days_to_expire,devices.name)">
                        <owl-date-time [pickerMode]="'dialog'" #dt5></owl-date-time>                         
                    </button></ng-template>

在组件方面

showPicker: boolean = true;
ngOnDestroy(): void {
 this.showPicker = false;
}

如果这不起作用,请尝试将ngIf放入: <owl-date-time>标签。