如何在bsValueChange

时间:2019-05-31 18:55:47

标签: angular ngx-bootstrap

尝试操纵所选日期以向用户显示不同的值。想要包括一天,一周,一个月的开始时间。如果结束,则同样适用。

这就是我要实现的目标,例如,我选择了今天的日期,并且想要显示一天的开始时间,例如:31/05/2019 00:00:00以及一天的结束时间31/05 / 2019 23:59:59

我相信bsdatepicker不会立即提供该功能,因此我需要使用moment操作日期并将其设置为视图值。限制bsValue仅接受日期,并且如果要在(bsValueChange)输出事件期间重新分配日期,则是限制。您会得到最大的调用堆栈错误。

尝试在更改时使用ngModel更改此值,但用户选择的值始终优先于设置为ngModel变量的值。

<input ([ngModel])="myVar" bsDatepicker (bsValueChange)="onChange($event)">

public onChange(date: Date) {
  myVar = 31/05/2019 00:00:00 // ths will be overriden by the user's selected date which made think that 

this.datepicker.bsValue = 31/05/2019 00:00:00 //moment manipulated date - this will trigger a maximum callstack error.
}

这使我可以选择直接与DOM一起工作,因为我已经尝试过renderer2进行各种尝试(以维持推荐的方法和“安全性”),但没有成功

1 个答案:

答案 0 :(得分:0)

通过使用目标输入上的[value]属性来解决此问题。日期一旦格式化为包括时间单位。然后,可以在[value]属性上设置此格式化的日期值。

然后,这导致了一个意外的问题:如果清除了日期(空字符串),则这反过来又使bsDatepicker在目标输入上设置了“无效日期”。为解决此问题,我遵循了this