有没有办法在 Angular(例如 Angular 4)添加到 DOM 的每个 HTML 元素上都添加一个 CSS 类(比如说
背景:我正在处理一个庞大的 AngularJS 项目,包含数十万行代码(包括数万行 CSS)。现在,该项目的一些 AngularJS 组件应该被升级到 Angular。不幸的是,周围 AngularJS 项目的许多样式会泄漏到 Angular 组件中,并与我们想要使用的样式发生冲突。因此,我们正在考虑的一个解决方案是通过 SASS 或某些后处理 Python 脚本为 AngularJS 样式的每个选择器添加一个
有没有办法实现这个目标?
.angular-app
)?“每个 HTML 元素”包括模板中的子元素、孙子元素等以及传递的内容,即不仅限于 Angular 组件/指令/宿主。背景:我正在处理一个庞大的 AngularJS 项目,包含数十万行代码(包括数万行 CSS)。现在,该项目的一些 AngularJS 组件应该被升级到 Angular。不幸的是,周围 AngularJS 项目的许多样式会泄漏到 Angular 组件中,并与我们想要使用的样式发生冲突。因此,我们正在考虑的一个解决方案是通过 SASS 或某些后处理 Python 脚本为 AngularJS 样式的每个选择器添加一个
:not(.angular-app)
选择器,以便它们不匹配在 Angular 组件中使用的任何元素。有没有办法实现这个目标?
旁注: 显然,通过在Angular组件的CSS中使用all:revert
或创建ShadowDOM可以轻松解决此问题,但由于这些技术目前得到的浏览器支持很少,因此我们需要一种中间解决方案。(为了完整起见,另一种解决方案是在AngularJS样式表的每个选择器中添加一个:not()
选择器,以确保我们不在Angular组件内部,但this would require CSS 4 selectors。)
[编辑]: 我想这可以通过为Angular组件编写自定义渲染器来完成(请参阅these links),但我不完全确定如何操作。 Angular本身是否对其处理的每个 HTML元素使用createElement
和appendElement
?