离子,角度-ChangeDetectorRef未定义

时间:2018-07-19 08:43:44

标签: angular ionic-framework ionic2 ionic3

我正在这样导入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);

2 个答案:

答案 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();
}