【问题标题】:Open angular mat-datepicker from typescript从打字稿打开角度 mat-datepicker
【发布时间】:2018-11-11 07:43:47
【问题描述】:

我有一个这样的选择:

 <mat-select placeholder="..." (change)="onChange($event.value)">
     <mat-option *ngFor="let option of options" [value]="option.value">
        {{ option }}
     </mat-option>
 </mat-select>
 <div class="disable">
    <mat-form-field>
       <input matInput [matDatepicker]="picker" placeholder="Choose a date">
       <mat-datepicker #picker ></mat-datepicker>
    </mat-form-field>
 </div>

禁用类只是隐藏div的包含。

在我的 onChange($event) 中:

onChange(value) {
   if(value === 'someValue'){
       openDatePicker() //How to do this ??
   }
}

如果选择了特定值,我想打开日期选择器。 可以从打字稿中做到这一点吗?

感谢您的回复

【问题讨论】:

标签: angular typescript datepicker


【解决方案1】:

对于那些试图让它在最新版本的 Angular 上工作的人,您需要向 @ViewChild 添加第二个参数:

  @ViewChild('picker', {read: undefined, static: false}) datePicker: MatDatepicker<Date>;

并在您的函数中定期引用该对象:

onChange(value) {
  if(value === 'someValue'){
    this.datePicker.open();
  }
}

【讨论】:

    【解决方案2】:

    您需要使用ViewChild 在代码中获取日期选择器,如下所示:

    @ViewChild('picker') datePicker: MatDatepicker<Date>;
    

    然后在你的函数中,可以调用datepicker的open()方法:

    onChange(value) {
       if(value === 'someValue'){
           this.datePicker.open();
       }
    }
    

    链接到StackBlitz demo

    【讨论】:

      【解决方案3】:

      TS 中使用 ViewChild 创建日期选择器对象:

      @ViewChild('picker') datePicker: MatDatepicker;
      

      使用MatDatepicker 的预定义方法open 作为:

      onChange(value) {
         if(value === 'someValue'){
             this.datePicker.open();
         }
      }
      

      【讨论】:

      • 这与我的回答有何不同?
      猜你喜欢
      • 2013-08-16
      • 2016-02-03
      • 2015-06-23
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 2022-09-23
      • 2023-03-29
      相关资源
      最近更新 更多