代码之家  ›  专栏  ›  技术社区  ›  Venomoustoad

如何获取在angular 8(bs datepicker)中更新的输入日期字段的更改?

  •  0
  • Venomoustoad  · 技术社区  · 5 年前

    我正在尝试使用中的bsDatepicker自动设置结束日期输入,以便在选择时匹配开始日期。

    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
        })
      }
    

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

    2 回复  |  直到 5 年前
        1
  •  2
  •   jitender    5 年前

    blur 尝试使用 bsValueChange

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

    demo value change

        2
  •  0
  •   riorudo    5 年前

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

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

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

    为了得到 start_date

    this.myForm.patchValue({
      end_date: this.form.get('start_date').value
    })
    
    推荐文章