我应该将 class 属性添加到 Angular 组件选择器标签吗

Should I add class attributes to Angular component selector tags

我想将 class 直接添加到 Angular 5 中的选择器。像这样:

<myapp-selector class="myclass"></myapp-selector>

我已经搜索了一段时间,我找到了一些解决方案,比如使用 host@Component。但我找不到关于具体问题的明确答案。

它安全吗?它是否被认为是一种不良做法?

最好的方法是在组件内部应用 stlye/class 作为容器,但您也可以将 类 添加到组件。

我想这实际上取决于您要实现的目标。

只需将 class 添加到组件,只需将其静态添加到标签即可,正如您已经提到的那样。

有条件地添加 class 可以通过多种方式完成,其中之一是使用 @HostBinding() 或组件的 host 属性

@Component({
  ...
})
class SomeComponent {

  @HostBinding('class.someClassName') shouldAddClass: boolean;

}

@Component({
  host: {
    '[class.active]': 'somePropertyName'
  }
})
class SomeComponent {
  somePropertyName: boolean;
}

现在,active class 将在 属性 为 true 时添加,并在 false 时删除。

另一种选择是使用 [ngClass] 指令,它的作用基本相同,只是组件的使用者决定何时添加和删除 class:

<some-component [ngClass]="{ active: somePropertyThatsEitherTrueOrFalse }">