我正在这样导入ChangeDetectorRef:
import { Component, ViewChild, ChangeDetectorRef , ElementRef } from '@angular/core';
并在我的页面的构造函数中初始化更改检测器,如下所示:
constructor(
...
private ref: ChangeDetectorRef
)
但是当我在回调函数中执行detectChanges()时:
hardResetCallback(car:Car){
this.car=car;
this.ref.detectChanges();
}
它说“无法读取未定义的属性'detectChanges'”。我可能会缺少什么?
编辑:
从模式调用回调。模态通过导航参数获取回调-在我称为的父组件中:
const resetModal : Modal = this.modal.create('CarConfigurationResetPage', { car: this.car, callback: this.hardResetCallback });
resetModal.present();
然后这就是我在模态中得到它的方式:
this.callback=this.navParams.get('callback');
我像这样在AJAX调用的成功方法中从模式调用回调:
this.callback(response);
答案 0 :(得分:3)
hardResetCallback = (car:Car) => {
this.car=car;
this.ref.detectChanges();
}
使用粗箭头功能可防止在hardResetCallback方法范围内创建“ this”。
详细了解箭头功能here.
相关报价:
“在经典函数表达式中,this关键字绑定到 根据调用上下文的不同而有所不同。用 箭头功能,但是这在词汇上是受约束的。这意味着 使用包含箭头功能的代码中的代码。”
答案 1 :(得分:0)
您可以使用:
this.ref.markForCheck();
if (!this.ref['destroyed']) {
this.ref.detectChanges();
}