【发布时间】:2019-06-27 20:05:36
【问题描述】:
有了这个模板
<img src="{{someDynamicImageSrcVar}}"
(load)="onImageLoad($event)"
[ngStyle]="getImageStyle()"
>
图像改变并加载后,onImageLoad() 会更新一些属性。
getImageStyle() {
const style = {
'width.px': this.naturalWidth,
'height.px': this.naturalHeight
};
console.log(style);
return style;
}
框架调用 getImageStyle() 来返回类似
的样式{width: "500px", height: "400px"}
但是,除了第一次调用 getImageStyle() 之外,DOM 不会更新。
样式不会从初始值改变。
样式更新应该怎么做?
【问题讨论】:
-
你的组件上有
changeDetection: ChangeDetectionStrategy.OnPush吗? -
我查了一下,它就在那里。
-
嗯,这可能是它没有重新渲染的原因,尝试删除它并观察
-
我删除了该行,但没有任何效果。我可以在 div 中看到 src 更新,但样式没有变化。我可以看到控制台中打印了正确的样式。我还在 onImageLoad 函数中尝试了 cdr.detectChanges()。
-
你现在可以试试@Akash Srivastav 答案吗?