The (change) event on an input with ngbDatepicker is currently called when (blur) is called. Which makes no sense, because that’s what (blur) is for. Also (change) AND (blur) are both NOT called when the date is changed via the pop up date picker (which makes sense for blur, but not for change).
Why I think this is a problem: (change) should reflect any changes in the control. So if I type something this changed the value. If the value is now invalid, the change is that it is now invalid. If it’s still valid, because I did change one number in a valid date, resulting in a new valid date, that’s a change as well. Also if the date is changed via the popup, it should also trigger a changed event.
As to why I think it should correctly reflect change: Because you can build dynamic forms upon that feature. If you change the date I change the form. But if you need to click outside of the control to make those changes happen, that’s very bad UI design.
Version of Angular, ng-bootstrap, and Bootstrap: