Angular 如何在bsValueChange中将自定义日期设置为bsdatepicker

Angular 如何在bsValueChange中将自定义日期设置为bsdatepicker,angular,ngx-bootstrap,Angular,Ngx Bootstrap,试图操纵所选日期以向用户显示不同的值。希望包括一天、一周、一个月的开始。如果是结束,同样适用 这就是我试图实现的目标,假设我选择了今天的日期,我想显示一天的开始,例如:2019年5月31日00:00:00和2019年5月31日23:59:59 我相信bsdatepicker并没有提供现成的数据,所以我需要使用moment操作日期,并将其设置为视图值。如果在(bsValueChange)输出事件期间要重新分配日期,则bsValue仅接受日期是有限制的。您将获得最大调用堆栈错误 尝试在更改时使用ng

试图操纵所选日期以向用户显示不同的值。希望包括一天、一周、一个月的开始。如果是结束,同样适用

这就是我试图实现的目标,假设我选择了今天的日期,我想显示一天的开始,例如:2019年5月31日00:00:00和2019年5月31日23:59:59

我相信bsdatepicker并没有提供现成的数据,所以我需要使用moment操作日期,并将其设置为视图值。如果在(bsValueChange)输出事件期间要重新分配日期,则bsValue仅接受日期是有限制的。您将获得最大调用堆栈错误

尝试在更改时使用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.
}

公开变更(日期:日期){
myVar=2019年5月31日00:00:00//ths将被用户选择的日期覆盖,该日期使您认为
this.datepicker.bsValue=2019年5月31日00:00:00//这将触发最大调用堆栈错误。
}

这让我可以选择直接使用DOM,因为我已经尝试了renderer2的各种方法(通过angular来维护推荐的方法和“安全性”),但没有成功

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


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

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


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

你能提供一个stackblitz吗?您的代码片段无效
myVar=31/05/2019 00:00:00
this.datepicker.bsValue=31/05/2019 00:00
@penleychan该代码试图演示我尝试过的方法的变量/属性的重新分配,并在描述中对此进行了解释。如果需要stackblitz,我将尝试重新创建我遇到的问题。我有一个替代方法,一个简单得多的方法,我相信它会起作用,而不是试图用render2或elementRef使事情复杂化(我认为我不需要这些方法来简单地更改输入的viewValue)。如果这种方法能让我克服障碍,我会发布一些反馈吗?你能提供一个stackblitz吗?您的代码片段无效
myVar=31/05/2019 00:00:00
this.datepicker.bsValue=31/05/2019 00:00
@penleychan该代码试图演示我尝试过的方法的变量/属性的重新分配,并在描述中对此进行了解释。如果需要stackblitz,我将尝试重新创建我遇到的问题。我有一个替代方法,一个简单得多的方法,我相信它会起作用,而不是试图用render2或elementRef使事情复杂化(我认为我不需要这些方法来简单地更改输入的viewValue)。如果这种方法能让我跨越障碍,我会发布一些反馈