我有一个奇怪的问题,我几个小时都无法解决。
在我的组件中,我有:
@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”;它在组件中的其他地方保持未定义。
我错过了什么,还是错误?
答案 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