当使用多个类来应用时,NgClass使用属性名称而不是类内容

时间:2019-03-28 10:25:40

标签: css angular ng-class mdbootstrap

我试图将多个(在我的案例2中)类应用于自定义组件,该组件包含MDBootstrap中的列表项组件:

App.module.ts

<custom-list-component size="w-50">
    <custom-list-item-component href="#">list item 1</custom-list-item-component>
    <custom-list-item-component href="#">list item 2</custom-list-item-component>
</custom-list-component>

Custom-list-component.component.html

<div [ngClass]="size" class="list-group">
  <ng-content></ng-content>
</div>

Custom-list-component.component.ts

import { Component, OnInit, Input } from '@angular/core';

@Component({
  selector: 'custom-list-component',
  templateUrl: './custom-list-component.component.html',
  styleUrls: ['./custom-list-component.component.sass']
})
export class CustomListComponentComponent implements OnInit {

  @Input() size: string;
  testHorizontal: string = "list-group-horizontal";

  constructor() { }

  ngOnInit() {

  }
}

当我像在自定义列表组件HTML中一样“仅”应用 size 时,它会将 w-50 应用于列表,从而使其显示在50页面百分比:

enter image description here

但是现在,我想应用第二个“类”,我要对已应用w-50的div应用 list-group-horizo​​ntal 。我一直在寻找文档,并且尝试了以下所有解决方案:

<some-element [ngClass]="'first second'">...</some-element>

<some-element [ngClass]="['first', 'second']">...</some-element>

<some-element [ngClass]="{'first': true, 'second': true, 'third': false}">...</some-element>

<some-element [ngClass]="stringExp|arrayExp|objExp">...</some-element>

<some-element [ngClass]="{'class1 class2 class3' : true}">...</some-element>

例如,这不起作用:

<div [ngClass]="'size testHorizontal'" class="list-group">
  <ng-content></ng-content>
</div>

因为 w-50 list-group-horizo​​ntal 不适用于div,仅适用于其名称。这也适用于上述其他选项。看起来像这样:

enter image description here

我如何将属性的内容而不是其名称应用于DIV?

谢谢。

1 个答案:

答案 0 :(得分:1)

ngClass指令需要一个字符串作为类(在您的情况下)追加。

所以我们必须使用变量创建一个字符串。

[ngClass]="size +' '+ testHorizontal"

使用两个变量size +' '+ testHorizontal

构造一个字符串