角度样式未应用于组件(尽管使用了宿主选择器)

雷米·劳特

我在我的角度项目中对组件的样式有疑问。我基本上无法正常工作。为了解释我的问题,我使用Angular CLI(CLI 6.0.8,angular 6.1.0)创建了一个新项目。马上,我创建了一个新的测试组件,在其中声明以下内容:

- - - - - - - - - - - - - 
COMPONENT TEMPLATE FILE:
- - - - - - - - - - - - - 

<div>with div</div>
without div

- - - - - - - - - - - - - 
COMPONENT STYLE FILE:
- - - - - - - - - - - - - 

:host
{
  background-color: blue;
}

(无需更改打字稿声明文件)

我将此组件包括在应用程序模板中,并在app.css文件中为其声明了一些样式:

- - - - - - - - - - - - - 
APP TEMPLATE FILE:
- - - - - - - - - - - - - 

<app-test class='test'></app-test>

- - - - - - - - - - - - - 
APP STYLE FILE:
- - - - - - - - - - - - - 

.test
{
  background-color: red;
  width: 350px;
}

这是我得到的结果:

图片:样式无法正确应用(背景颜色仅适用于自由文本)

IMAGE:元素的宽度未更新,并且未显示元素大小,如使用chrome时通常那样

图像:通常显示时,元素尺寸以蓝色突出显示

如图中所示,无论是在父作用域还是在组件作用域(使用:host)中定义的样式,都无法正确应用。样式已更新,但未显示。当我在浏览器中将“ app-test”标签更改为“ div”标签时(使用调试工具>编辑为HTML),它会正确显示:

图片:将角度分量标签更改为div标签可对问题进行排序

我认为这与角度显示组件的方式有关,因为将标签更改为DIV即可。但是我不明白这个问题是从哪里来的。此问题出现在使用CLI新建的项目中,未在项目配置中进行任何配置...

谁能帮我?

家蚕

关于您在测试组件中所面临的宽度问题,假设您希望整个元素的宽度为350px,则应定义其display属性以进行阻止:

:host {
  background: blue;
  display: block;
}

自定义元素没有默认的显示属性,您的浏览器无法猜测您的意思是什么。

关于.test在您的组件上应用样式,app-component样式会使用_nghost-c0_ng-content-c0属性进行封装,因此不会应用于test.component如果要.test在其他组件上应用,则可以在全局应用的全局文件编写CSS RULEstyles.css

//styles.css
.test {
  background-color: red;
  width: 350px;
}

像这样使用装饰器viewEncapsulation属性@component

//app.component.ts
import { Component, ViewEncapsulation } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  encapsulation: ViewEncapsulation.None
})

然后可以将CSS RULE保留app.component文件上

//app.component.css
.test {
  background-color: red;
  width: 350px;
}

但现在该文件中的样式尚未封装,并且会渗透到其他组件中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用组件内的选择器将主题/样式应用于所有html / react标签

css 样式未应用于 guid css 类选择器

定义选择器以应用于其他样式

角度2:通过组件选择器应用CSS样式

使用选择器时未应用样式

CSS选择器仅将样式应用于父链接

如何通过选择器将 CSS 应用于组件的元素 - Angular7/8

jQuery选择器:未单击某些子项时将规则应用于元素

垫菜单样式未应用于角度

将选择器应用于已选择的元素

样式未正确应用于Navbar React组件

如何使用颜色选择器将CSS颜色应用于父元素?

多CSS选择器未应用样式

特定组件的自定义样式将应用于角度6中的所有组件

如何向根组件dom元素(角度选择器组件)添加样式

如何在具有其他组件选择器的角度组件中更改特定样式

如何使用样式组件将样式应用于多个组件

反应样式化的组件不将样式应用于组件

样式未应用于HTML元素

样式未应用于儿童道具

SCSS 样式未应用于文件

将样式应用于特定于全局 css 文件的角度材料组件

角度-样式未从父级应用于我的自定义组件

通过为组件内的<style>标签(未使用的CSS选择器)添加样式,来对Svelte组件的{@html ...}标签进行样式化

将颜色选择器选择应用于 Div 字体

css ~ 选择器不会将样式应用于所有目标元素(z-index 到下一个/上一个标签)

样式表未使用node.js应用于我的本地服务器

如何将选择器选项应用于仅在Element UI日期选择器中启动日历

WPF 样式:对样式如何应用于组件的全面描述