如何在输入字段的ng-bootstrap Datepicker中检测日期选择?

时间:2018-02-21 10:22:55

标签: html5 angular datepicker ng-bootstrap

我们在项目中使用ng-bootstrap Datepicker as Directive

<input class="form-control"
         name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close()" [(ngModel)]="model"
         (ngModelChange)="onDateSelected()">

当前行为是,当选择了datepicker中的日期时,以及每次对输入字段进行更改时,都会调用onDateSelected()

所需的行为是,只要用户点击日期选择器中的日期或将光标移出onDateSelected()(即模糊),就会调用<input>。< / p>

我的方法是将(ngModelChange)更改为(blur)

<input class="form-control"
         name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close(); onDateSelected()"
         [(ngModel)]="model">

但是当从datepicker中选择日期时,这会导致调用onDateSelected() 而不是 - 这有点意义,因为光标不在<input>内。但是,在搜索dateSelected时,我无法找到某种onDateSelected() - 事件,我可以拨打<input class="form-control" name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close(); onDateSelected()" /* missing -> */ (dateSelected)="onDateSelected()" /* <- */ [(ngModel)]="model">

import UIKit

class ViewController: UIViewController {

    var object: DraggableView?

    override func viewDidLoad() {
        super.viewDidLoad() 
        // Create the object
        object = DraggableView(parent: self)
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // Add subview
        object?.setup()
    }
}

我想念的是什么吗?或者可能是另一种实现此行为的方法?我不能想到成为唯一有此要求的人......

4 个答案:

答案 0 :(得分:5)

同时,issue已关闭,并且1.1.0中会有一个(dateSelect)事件:https://github.com/ng-bootstrap/ng-bootstrap/pull/2254

答案 1 :(得分:0)

猜猜select输出法就是你要找的。

  

选择:用户使用键盘或鼠标选择日期时触发的事件。当前选择了事件的有效负载NgbDateStruct。

参考output section

答案 2 :(得分:0)

使用dateSelect对我有用:

<input class="form-control"
     name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close(); ()onDateSelected()"
     [(ngModel)]="model">

答案 3 :(得分:-1)

<input class="form-control"
     name="dp" ngbDatepicker #d="ngbDatepicker" (blur)="d.close()" 
[(ngModel)]="model"
     (select)="onDateSelected()">

这将起作用,并且只要您在日期选择器中选择一个日期,就会调用onDateSelected()