在Angular2生命周期钩子中调用detectChanges()?

时间:2017-05-23 11:08:21

标签: angular typescript angular2-changedetection lifecycle-hook

我所知道的是,我们调用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();
            }
        }
    }
}

0 个答案:

没有答案