Angular 8 根据父级禁用按钮 class

Angular 8 make button disable based on parent class

您好,如果导航有 class 'done' 或 'active' 总是动态添加,您需要将按钮 [禁用]。

模板:

<div
 class="nav"
 *ngFor="let step of steps; let stepIndex = index"
 [ngClass]="{
  done: step.done,
  active: stepIndex == selectedIndex
  }"
 >
 <button class="btn"></button>
</div> 

我不知道该怎么做,所以寻求帮助。

你可以试试这样的

<button [disabled]="step.done || stepIndex == selectedIndex" class="btn"></button>

您可以在按钮的[disabled] 属性中再次绑定条件。尝试以下

<div
  class="nav"
  *ngFor="let step of steps; let stepIndex = index"
  [ngClass]="{
    done: step.done,
    active: stepIndex == selectedIndex
  }">

  <button class="btn" [disabled]="step.done || stepIndex == selectedIndex"></button>
</div>

您可以访问 DOM 元素,例如:

<div #div1 class="foobar hero">
  I am a div with any class
  <button class="btn" [disabled]="div1.classList.contains('done') || div1.classList.contains('active')">Button</button>
</div>
<hr>
<div #div2>
  I am a div with no class
  <button class="btn" [disabled]="div2.classList.contains('done') || div2.classList.contains('active')">Button</button>
</div>
<hr>
<div #div3 class="done">
  I am a div with done class
  <button class="btn" [disabled]="div3.classList.contains('done') || div3.classList.contains('active')">Button</button>
</div>
<hr>
<div #div4 class="active">
  I am a div with active class
  <button class="btn" [disabled]="div4.classList.contains('done') || div4.classList.contains('active')">Button</button>
</div>
<hr>

堆栈闪电战: https://stackblitz.com/edit/angular-ivy-qjsvfi?file=src/app/app.component.html

编辑: 看起来你正在使用 bootstrap,你可能想考虑设置禁用 class 而不是 属性。

<button class="btn" [ngClass]="{ disabled: div4.classList.contains('done') || div4.classList.contains('active') }">Button</button>