Angular2私有变量未在ngOnChanges()中更新

时间:2017-02-09 11:14:09

标签: angular

我有一个奇怪的问题,我几个小时都无法解决。

在我的组件中,我有:

@Input() content : string;

private contentPreview : any;

ngOnChanges(changes: SimpleChanges)  {
    this.contentPreview = changes['content'].currentValue;
    console.log(changes['content'].currentValue);   // <-- WORKS
}

变量this.contentPreview未更改。如果我尝试显示它,它仍然是未定义的。即使我尝试this.contentPreview =“X”;它在组件中的其他地方保持未定义。

我错过了什么,还是错误?

1 个答案:

答案 0 :(得分:1)

我实际上无法重现您的问题。但您可以尝试使用 NgZone 强制进行更新,因为您说console.log正在运行,因此这意味着至少会调用该挂钩,但由于某种原因,它和#39;没有更新DOM。所以试试:

在您的子组件中:

import {NgZone} from '@angular/core'

在构造函数中注入它:

constructor(private ngZone: NgZone) { }

然后在OnChanges

ngOnChanges(changes: SimpleChanges) {
   this.ngZone.run(() => this.contentPreview = changes['content'].currentValue;) 
}

这里是Plunker