我已更新为Angular 8,但更改CSS类时我的ngStyle并未更新

时间:2019-07-31 15:26:10

标签: css angular angular-material angular8

我有这样的分层样式:

[ngStyle]="columnStyleArray[i1][i2].style"应用于*ngFor.

中的组件

我通过双向绑定进行更改。

到目前为止,在Angular 7中它可以正常工作,但是当我升级到Angular 8时,它不再起作用。调整浏览器大小后,新CSS生效并变得可见。

不确定这是Angular 8的错误还是我忽略了某些内容。

试图更改设置
封装:ViewEncapsulation.None, changeDetection:ChangeDetectionStrategy.OnPush

<div class="template-container" *ngFor="let section of mailtemplateArray; let i1 = index">
<div [ngStyle]="sectionStyleArray[i1].style"></div>
</div> 

没有任何错误代码,但CSS仅在调整窗口大小之后适用

2 个答案:

答案 0 :(得分:0)

假设columnStyleArray[i1][i2].style不是样式对象({ styleName: 'styleValue' }),您似乎使用了错误的语法。试试这个:

[ngStyle]="{ propertyName: columnStyleArray[i1][i2].style }"

  

这是您推荐的Working Sample StackBlitz

答案 1 :(得分:0)

尝试更改ChangeDetection策略。对我来说,听起来好像是因为对对象进行突变而没有触发DOM更新,所以OnPush策略严格地在寻找不变的变化。

如果更改策略可行,则可以不变地更新集合(措辞?),也可以使用ChangeDetectorRef方法detectChanges触发DOM更新。