【问题标题】:ng-bootstarp - datepicker picks wrong date when applying OnPush ChangeDetection Strategy in componentng-bootstrap - datepicker 在组件中应用 OnPush 更改检测策略时选择错误的日期
【发布时间】:2020-01-29 07:08:59
【问题描述】:

当我不在组件中应用ChangeDetectionStrategy.OnPush 时,Datepicker 工作正常。但是当我在组件中应用ChangeDetectionStrategy.OnPush 并且在ngAfterViewInit 中更改detach 时,它开始选择错误的日期(有时)。

我了解,datepicker modal 无法将更改应用到选择,因为我从组件中分离了所有更改。我需要有一个ng-bootstrap 回调,当用户在datepicker 模式中更改操作时我可以应用detectChanges()(例如更改年份、月份、通过箭头导航月份)。

这是stackblitz中的代码

【问题讨论】:

    标签: javascript angular datepicker ng-bootstrap angular-changedetection


    【解决方案1】:

    您已经添加了一个在日期更改时调用的事件,在该函数中应用检测更改

    <input class="form-control" placeholder="yyyy-mm-dd" name="fromdp"
        [(ngModel)]="fromDate" (dateSelect)="triggerFromDateFilter($event)"
        ngbDatepicker #fromdate="ngbDatepicker">
    
    triggerFromDateFilter(evt) {
     console.log(evt)
     this.changeDetector.detectChanges();
    }
    
    triggerToDateFilter(evt) {
     console.log(evt);
     this.changeDetector.detectChanges();
    }
    

    【讨论】:

    • 它不起作用。我刚刚更新了 stackblitz 中的代码
    • @user3384985 可以看到这个example stackblitz
    • 当您单击箭头导航时,它不起作用。此外,有时当您更改月份或年份时,它也不起作用。
    • @user3384985 它不起作用,因为 dateSelect 事件仅在您从日期选择器(日历)中选择日期时触发,当用户使用键盘或选择日期时会触发 select 事件鼠标Read more here
    • 谢谢@Sameer。我会对其进行审核,并让您知道它是如何工作的。
    猜你喜欢
    • 2021-03-06
    • 2013-06-05
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多