如何根据组件内容的可见性在组件标签上有条件地应用样式?

萨拉瓦那

假设我有一个像这样的组件,其中包含显示或隐藏组件内部内容的逻辑:

@Component({
  selector: 'hello',
  template: `<div *ngIf="visible"> <h1>Hello {{name}}!</h1></div>`,
  styles: [`h1 { font-family: Lato; } div { border: 1px solid blue }`]
})
export class HelloComponent  {
  @Input() name: string;
  visible: boolean;
  ngOnInit() {
    this.visible = this.name === "Stranger"
  }
}

我在另一个组件中像这样使用它:

<div class="container">
  <hello class='hello-class' name="Stranger"></hello>

  <!-- This will not be visible -->
  <hello class='hello-class' name="Not stranger"></hello>
</div>

我将一些样式应用于这样的hello组件:

.hello-class {
  display: block;
  margin-bottom: 80px;
}

由于hello组件中的条件,组件的第二次使用将不可见。但是,即使该组件不可见,我添加的样式也hello-class将应用于该组件。

我无法移动条件以将组件显示/隐藏到父对象。所以我不能*ngIf在组件之前做一个

仅当组件可见时,有什么方法可以应用此样式?

这是一个说明问题的stackblitz链接:https ://stackblitz.com/edit/angular-ivy-mfrb7j

扎卡里·哈伯(Zachary Haber)

由于没有子级,因此可以使用css选择器执行此操作:

.hello-class:not(:empty) {
  display: block;
  margin-bottom: 80px;
}

通过使用:not(:empty)它检查元素(组件的宿主元素)是否具有子元素。如果没有孩子,则样式将不适用。

https://developer.mozilla.org/zh-CN/docs/Web/CSS/:empty

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在有条件的组件上有条件地添加道具?

来自分类Dev

根据组件的使用位置,有条件地将className应用于react组件

来自分类Dev

有条件可见性消失/可见的活动性能

来自分类Dev

使用AngularJS在选项标签上有条件地设置类

来自分类Dev

根据属性值有条件地包含组件

来自分类Dev

CSS根据属性的可用性有条件地应用样式

来自分类Dev

CSS根据属性的可用性有条件地应用样式

来自分类Dev

在 React 组件中,如何在迭代列表时有条件地显示样式

来自分类常见问题

如何有条件地包装React组件?

来自分类Dev

如何有条件地渲染原因反应组件?

来自分类Dev

如何有条件地向组件添加文本?

来自分类Dev

如何有条件地渲染 Angular 组件

来自分类Dev

如何在React中有条件地将布局应用于组件

来自分类Dev

样式化的组件-根据道具有条件地渲染整个CSS块

来自分类Dev

在特定路线和视口高度上有条件地渲染组件

来自分类Dev

在 Vue Router 上有条件地映射路由组件

来自分类Dev

如何双击切换组件的可见性?

来自分类Dev

替代组件的可见性

来自分类Dev

Notepad ++ XML-根据子标签内容有条件地删除标签

来自分类Dev

根据功能组件中的数据有条件地渲染元素

来自分类Dev

根据React功能组件中的状态变量有条件地设置className

来自分类Dev

在 Reactjs 组件中有条件地呈现来自 API 响应的内容

来自分类Dev

根据另一个组件的状态更改React组件可见性

来自分类Dev

有条件地将CSS类应用于Angular组件宿主

来自分类Dev

有条件地反应测试库渲染组件

来自分类Dev

有条件地指定组件的道具

来自分类Dev

使用hidden属性与有条件地渲染组件

来自分类Dev

Blazor:有条件地显示RenderFragment组件

来自分类Dev

有条件地将组件导入Vue Router

Related 相关文章

  1. 1

    如何在有条件的组件上有条件地添加道具?

  2. 2

    根据组件的使用位置,有条件地将className应用于react组件

  3. 3

    有条件可见性消失/可见的活动性能

  4. 4

    使用AngularJS在选项标签上有条件地设置类

  5. 5

    根据属性值有条件地包含组件

  6. 6

    CSS根据属性的可用性有条件地应用样式

  7. 7

    CSS根据属性的可用性有条件地应用样式

  8. 8

    在 React 组件中,如何在迭代列表时有条件地显示样式

  9. 9

    如何有条件地包装React组件?

  10. 10

    如何有条件地渲染原因反应组件?

  11. 11

    如何有条件地向组件添加文本?

  12. 12

    如何有条件地渲染 Angular 组件

  13. 13

    如何在React中有条件地将布局应用于组件

  14. 14

    样式化的组件-根据道具有条件地渲染整个CSS块

  15. 15

    在特定路线和视口高度上有条件地渲染组件

  16. 16

    在 Vue Router 上有条件地映射路由组件

  17. 17

    如何双击切换组件的可见性?

  18. 18

    替代组件的可见性

  19. 19

    Notepad ++ XML-根据子标签内容有条件地删除标签

  20. 20

    根据功能组件中的数据有条件地渲染元素

  21. 21

    根据React功能组件中的状态变量有条件地设置className

  22. 22

    在 Reactjs 组件中有条件地呈现来自 API 响应的内容

  23. 23

    根据另一个组件的状态更改React组件可见性

  24. 24

    有条件地将CSS类应用于Angular组件宿主

  25. 25

    有条件地反应测试库渲染组件

  26. 26

    有条件地指定组件的道具

  27. 27

    使用hidden属性与有条件地渲染组件

  28. 28

    Blazor:有条件地显示RenderFragment组件

  29. 29

    有条件地将组件导入Vue Router

热门标签

归档