【问题标题】:How to pick up changes on input date field updated in angular 8 (bs-datepicker)?如何获取以 Angular 8(bs-datepicker)更新的输入日期字段的更改?
【发布时间】:2019-10-09 06:16:43
【问题描述】:

我正在尝试使用角度中的 bsDatepicker 自动设置 end_date 输入以匹配 start_date。

myForm 中的html

<input #start_date type="text" (blur)="set_end_date(start_date.value)" formControlName="start_date"  bsDatepicker [bsValue]="bsValue"  [bsConfig]="bsConfig"  >
<input type="text" formControlName="end_date" bsDatepicker [bsValue]="bsValue" [bsConfig]="bsConfig"/>

组件.ts

  set_end_date(val){
    this.myForm.patchValue({
      end_date: val
    })
  }

模糊事件似乎无法正常工作。例如,如果我将 start_date 设置为 2019 年 9 月 23 日,它会将结束日期更新为空白。然后,如果我将开始日期更改为 2019 年 10 月 25 日,它会将结束日期设置为 9 月 23 日(基本上是之前设置的 start_date)。这向我表明,当调用 (blur) 事件时,存在某种延迟,不允许传递正确设置的 start_date。我的理解对吗?

我还尝试了似乎根本不起作用的(更改)事件(事件未拾取)。我该如何解决这个问题?

【问题讨论】:

    标签: angular input datepicker


    【解决方案1】:

    改为使用blur 尝试使用bsValueChange 事件来获取更新日期

    <input #start_date type="text" (bsValueChange)="set_end_date($event)" formControlName="start_date"  bsDatepicker [bsValue]="bsValue"  [bsConfig]="bsConfig"  >
    

    demo value change

    【讨论】:

      【解决方案2】:

      您可以在 formControl 上更改 chageDetection 的触发器:

      new FormControl('', {updateOn: 'blur'});
      

      比订阅changeEvent:

      this.myForm.get('start_date').valueChanges.subcribe(...)
      

      为了得到start_date的实际值:

      this.myForm.patchValue({
        end_date: this.form.get('start_date').value
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 2020-09-16
        • 2019-04-07
        相关资源
        最近更新 更多