我所知道的是,我们调用detectChanges()来触发本地更改检测检查。我看到一些代码,在ngOnChanges(更改)钩子里面调用了detectChanges(),我想知道为什么有人想做这样的事情?我的意思是,如果没有检测到变化检测,那么ngOnChanges就不会被调用吗?那么为什么要在钩子里面调用detectChanges呢?
@Directive({
selector: "[dateDisplay]"
})
export class DateDisplayDirective {
@Input() ngModel: Date;
@Input() format: string;
constructor(private _elem: ElementRef, private _change: ChangeDetectorRef) { }
ngOnChanges(change) {
if (change.ngModel && change.ngModel.currentValue && change.ngModel.currentValue != change.ngModel.previousValue) {
let date = this.ngModel ? moment.utc(this.ngModel) : null;
if (this._elem.nativeElement.value != undefined) {
this._elem.nativeElement.value = date ? date.format(this.format) : "";
this._change.detectChanges();
}
}
}
}