从 Angular 2+ 中的预定义数据填充 formControlName 复选框

Posted

技术标签:

【中文标题】从 Angular 2+ 中的预定义数据填充 formControlName 复选框【英文标题】:Populate formControlName checkbox from pre-defined data in Angular 2+ 【发布时间】:2021-04-13 10:03:46 【问题描述】:

我有一个动态创建的复选框列表,但我无法根据预定义的列表检查某些正确性。

html

   <div class="row">
            <div class="example-container col-md-6">
              <div *ngFor="let atribuicao of atribuicoesOcorrencia" formArraylName="inputAtribuicaoOcorrencia">
                <mat-checkbox [value]="atribuicao.id" (change)="onChange(atribuicao, $event)">
                  <div style="white-space: pre-wrap;">
                     atribuicao.descricao 
                  </div>
                </mat-checkbox>
              </div>
            </div>            
          </div>

类 TS: 我尝试在列表中填充 formControl 名称 inputAtribuicaoOcorrencia,在这种情况下 唯一的一项检查是 id 3,但没有任何反应

this.atribuicoesOcorrencia.forEach(listAtibuicoes=> 
  ocorrencia.atribuicoesDTO.forEach(x => 
    if(listAtibuicoes.id == x.id)  
      
      this.formCadastro.get('inputAtribuicaoOcorrencia').setValue('checked');
   
   
    
  );
);

TS2 类: 或者下面的代码只检查一个 ID

  this.formCadastro.patchValue(

 inputAtribuicaoOcorrencia: 'checked',     


);

【问题讨论】:

【参考方案1】:

您需要为 mat-checkbox 使用 [checked] 属性

// example
<mat-checkbox 
    [value]="atribuicao.id" 
    [checked]="atribuicao.id" // This is what you need to add. If id is there, it will get checked
    (change)="onChange(atribuicao, $event)"
>
    <div style="white-space: pre-wrap;">
         atribuicao.descricao 
    </div>
</mat-checkbox>

【讨论】:

以上是关于从 Angular 2+ 中的预定义数据填充 formControlName 复选框的主要内容,如果未能解决你的问题,请参考以下文章

从 Angular 中的 FormArray 中删除所有项目

从 Angular 2 上的查询参数中预填充输入文本框

使用Angular.js中的cookie填充选择的相关下拉列表

在 Angular 2 和 Typescript 中的数组中定义数组

Angular:从指令访问 FormControl

Angular2 http observables - 如何使用未定义的类型