如何在 Angular 9 中从变量添加 CSS 类名取决于布尔变量?

net*_*djw 8 angular-ng-class angular

我想从变量添加类名,但它依赖于 Angular 9 中的另一个变量。

这是我的 TypeScript 代码

export class InputComponent implements OnInit {
  @Input() inputBlockClass = 'col-12 d-flex px-0';
  @Input() inputBlockExtraClass = 'col-md-9';
  @Input() showLabel = true;

  // ...
}
Run Code Online (Sandbox Code Playgroud)

这是我的 HTML 代码:

<div [class]="inputBlockClass" [class.inputBlockExtraClass]="showLabel">
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个,但它不起作用:

<div [class]="inputBlockClass" [ngClass]="{inputBlockExtraClass: showLabel}">
Run Code Online (Sandbox Code Playgroud)

两种解决方案均给出以下结果:

<div _ngcontent-sxj-c111="" class="col-12 d-flex px-0 inputBlockExtraClass">
Run Code Online (Sandbox Code Playgroud)

但我想要这个:

<div _ngcontent-sxj-c111="" class="col-12 d-flex px-0 col-md-9">
Run Code Online (Sandbox Code Playgroud)

如何从变量添加类名取决于布尔变量?

dev*_*033 10

你可以这样做:

<div [class]="inputBlockClass" [ngClass]="showLabel ? inputBlockExtraClass : ''">
Run Code Online (Sandbox Code Playgroud)

或者你可以摆脱[class]

<div [ngClass]="[inputBlockClass, showLabel ? inputBlockExtraClass : '']">
Run Code Online (Sandbox Code Playgroud)

Stackblitz 演示


M A*_*man 5

你尝试这样做吗? https://stackblitz.com/edit/angular-ngclass-nbleik

 <div [class]="inputBlockClass" [ngClass]="showLabel?inputBlockExtraClass:''">>
      sometext
 </div>
Run Code Online (Sandbox Code Playgroud)