angular Prioritize _ngcontent styles over _nghost

ktca8awb  于 5个月前  发布在  Angular
关注(0)|答案(4)|浏览(68)

🚀功能请求

相关包

这个功能请求是为@angular/core,我猜

描述

Angular在满足组件需求时添加组件样式,导致应用的样式不一致。考虑两个组件:

  1. 具有主机绑定类._large的按钮,用于设置大小
  2. 内部包含具有类.override_size的按钮的卡片组件,该嵌套按钮设置不同的大小
    如果在我们加载卡片时视图中已经有了Button组件,那么Button样式已经存在于HEAD中,因此具有相同特异性的.override_size类会覆盖._large类,因为它来得晚。
    另一方面,如果Button首先出现在Card内部,它的样式稍后才会添加到HEAD中,因此._large类会接管。
    请查看此Stackblitz演示:
    https://stackblitz.com/edit/angular-styles-specificity-bug

注意:请不要考虑我给出的具体示例,这些只是我能想到的最简单的情况。*

描述你希望的解决方案

增加_ngcontent样式的特异性,因为它们通常更重要。当你在一个组件中构建一些样式,并在稍后将其用于其他组件中时——你可以向其添加类以指定在这种情况下需要的确切样式。最简单的方法是将[_ngcontent-X]属性选择器添加到样式两次(即.override_size[_ngcontent-c2][_ngcontent-c2] {)。

描述你考虑过的替代方案

目前我们必须通过以下方式手动增加特异性:要么在类前添加标签名(即button-component.override_size),要么使用其他任何方法,如添加两个类而不是一个:

.override_size {
 && {
    our styles
}

这样编译为.override_size.override_size,虽然不是理想的解决方案,但这是我能想到的最干净的解决方案。问题是,我们必须在每次向组件添加类时都牢记这一点,而不仅仅是HTML标签。

jtoj6r0c

jtoj6r0c1#

团队对此有何评论?这个问题可能发生在任何事情上,只是在与应用程序交互时遇到的组件的顺序问题。我至少会考虑将频率提高到中等水平,因为仅仅因为大多数情况下没有冲突的样式并不意味着问题不存在。

iszxjhcz

iszxjhcz2#

这个问题确实是一个值得关注的问题。

iqxoj9l9

iqxoj9l93#

更新了与Angular 14的复制:StackBlitz
似乎仍然是一个问题。

nafvub8i

nafvub8i4#

@pkozlowski-opensource WDYT,这是一个可修复的问题还是一个WAI(Web应用程序接口)问题?

相关问题