首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在angular14中禁用特定的mat复选框

如何在angular14中禁用特定的mat复选框
EN

Stack Overflow用户
提问于 2022-07-14 12:16:26
回答 1查看 343关注 0票数 1

我在我的application.Trying中使用了角质材料来禁用特殊的垫子检查箱,我试过了,但没有正常工作。它正在分解所有的checkbox.But,我只想禁用汽车和电机的复选框。该怎么做呢?如果有人知道,请帮忙找出解决办法。

mautocomponent.html:

代码语言:javascript
复制
  <mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn">
  <mat-option
    *ngFor="let data of filteredData | async"
    [value]="data"
    [disabled]="isDisable(data)"
  >
    <div (click)="optionClicked($event, data)">
      <mat-checkbox
        [checked]="data.selected"
        (change)="toggleSelection(data)"
        (click)="$event.stopPropagation()"
        [disabled]="isDisable(data)"
      >
        {{ data.item }}
      </mat-checkbox>
    </div>
  </mat-option>
</mat-autocomplete>

mautocomponent.ts:

代码语言:javascript
复制
      isDisable(obj:any){
    //Only disable Car and Motor
    var index = this.rawData.indexOf(obj);
    console.log(index)
    if (index == -1) {
      return false;
    }
    else {
      return true;
    }

  }

演示:https://stackblitz.com/edit/angular-ivy-6bvdt7?file=src%2Fapp%2Fshared%2Fmauto%2Fmauto.component.ts

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-14 12:48:44

你离我这么近。为什么不直接使用传递给obj函数的isDisable()

代码语言:javascript
复制
isDisable(obj: any){
    console.log(obj)
    if (obj.item === 'Car' || obj.item === 'Motor') {
      return true;
    }
    else {
      return false;
    }

}

SB演示

OP询问如何从父组件(app.component.ts)传递禁用列表。这样做的方法之一是,将禁用项目的列表从父母传递给吉拉德。

代码语言:javascript
复制
app.component.ts:
optionsToHide = ['Car', 'Motor'];

app.component.html:
<app-mauto
  ...
  [optionsToHide]="optionsToHide"
  ...
>

mauto.component.ts:

isDisable(obj: any){

  if (this.optionsToHide.findIndex(item => item === obj.item) > -1) 
  {
    return true;
  }
  else {
    return false;
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72980353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档