为什么在 Angular 中打开 "Optimization" 会导致 PrimeNg 元素正确渲染出现问题?

Why does turning on "Optimization" in Angular create problems with PrimeNg elements rendering correctly?

Angular版本:9.x

Primeng 版本:9.x

我一直遇到 PrimeNg 元素在我们的 dev/prod 环境中渲染不正确的问题,但是,这些元素在本地环境中渲染正确。我已将问题归结为 angular.json 文件中的 'optimization' 标志。当此标志设置为 false 时,样式将按预期呈现。但是,当该标志设置为 true 时,似乎某些 CSS 样式在那些导致不需要的样式的环境中被覆盖。

例如,当使用 PrimeNg 库中的 <p-carousel> 元素时,此元素会以意想不到的样式呈现按钮。此外,当在 <p-dialog> 元素上将 [modal]=true 属性 设置为 true 时,它​​不会执行预期的将背景变灰的行为。

我试图避免将优化标志设置为 false,因为它会增加构建大小。

目前采用的解决方法:

  1. 正在试验 Angular.json 属性。
  2. 正在尝试不同的 Typescript 版本(在 tsconfig.json 中将目标设置为 ES5)

轮播正确呈现:

旋转木马渲染不正确(注意蓝色 arrows/squares):

为什么设置此字段会影响 CSS 的呈现方式?除了将 'optimization' 设置为 false 之外,还有其他一些我可以使用的被忽略的修复吗?

我遇到了同样的问题,它在使用 ng serve 和 build --prod/optimization=false 构建时有效,当您使用 --prod 和 optimization=true 构建时调用 enableProdMode() 修复了问题,这里描述了这个问题 #8724

我遇到了同样的问题。感谢 Marcos Herrera 的回答,我找到了我总结如下的解决方案:

首先 - 运行 ng serve 模式并检查 <p-carousel> 元素的第一个 <div> 中需要哪些 class。在我的例子中有 ui-carousel ui-widget ui-carousel-horizontal

其次 - 将此 class 添加到 styleClass 属性中的标签: <p-carousel styleClass="ui-carousel ui-widget ui-carousel-horizontal">