我正在使用 Angular Dart 开发一个大项目。Javascript 将使用 dart2js 从 Dart 生成。该项目目前针对的是 Google Chrome,但将来它也应该可以在 Firefox 中运行。
一切都很好,直到上周 Google Chrome 35m 出现。所有Component
的样式表都损坏了。看起来applyAuthorStyles
在 Google Chrome 35m 中不起作用。
我花了很多时间研究,最后想出了以下解决方案:
在useShadowDom: false
声明一个Component
. 它让我重构Component
了我项目中的每一个存在:
- 删除
cssUrl
. 我必须将每个样式表移动Component
到一个(或多个)样式表文件中并将它们导入index.html
- 重新实现 every
ShadowRootAware.onShadowRoot
因为方法不接受ShadowRoot
作为其参数 - 重新测试(当然)
正如你所看到的,如果我应用这个解决方案,还有很多额外的工作。
我想知道是否有比我更好的解决方案?
编辑
我想我应该解释一下我的代码结构,以帮助大家更好地理解我的问题。
- 我的项目中有很多
Component
。每个Component
有 3 个文件:1 个 CSS 文件(范围)、1 个 HTML 文件和 1 个 dart 文件 - 我有一些全局 CSS 文件并在入口 HTML 页面 (index.html) 中导入它们
- 在 Chrome 35m 中,
Component
即使我设置了 HTML in 也没有来自全局 CSS 的样式applyAuthorStyles: true
(applyAuthorStyles
已弃用)
我只需要一个Component
使用全局 CSS 设置样式的解决方案(例如,来自 CSS 框架),代码更改最少。