【问题标题】:Select all mat option does not work properly选择所有垫子选项无法正常工作
【发布时间】:2020-02-08 03:09:33
【问题描述】:

关注this question我有:

<mat-select [formControl]="tipoAttivitaSelect" multiple >
              <mat-option #selectAll [value]="0" (click)="all()">
                  All
                 </mat-option>
            <mat-option *ngFor="let attivita of mappaAttivita" [value]="attivita" (click)="opzioneSelezionata(attivita.value)">
              {{attivita.description}}
            </mat-option>
          </mat-select>

在.ts中

@ViewChild('selectAll') private selectAll: MatOption;
tipoAttivitaSelect: FormControl = new FormControl();
mappaAttivita =  [{
      value:"option1",
      description:"Option 1"
  },
  {
      value:"option2",
      description:"Option 2"
  }]

   ngOnInit(){
    this.selectAll.select();
    this.tipoAttivitaSelect.patchValue([...this.mappaAttivita.map(item => item), 0])
  }



all() {
    if (this.selectAll.selected) {
      this.tipoAttivitaSelect.patchValue([...this.mappaAttivita.map(item => item), 0])
    } else {
      this.tipoAttivitaSelect.patchValue([])
    }
  }

我期望的是,当我转到该页面时,它们都被选中,但并没有发生。当我进入页面时,只有“全部”选项被选中,而其他选项都没有;然后,如果我取消选中所有选项,然后重新检查,则所有选项都已正确选择。
我不明白为什么会这样,因为我在 ngOnInit 和方法“all()”中都做了同样的操作

【问题讨论】:

  • 您必须在 ngAfterViewInit 中全选,因为您在 mat-select 加载值之前触发了 all() 函数。
  • 嗨@JuNe 谢谢。如果您回答问题,我会选择它作为解决方案

标签: angular-material angular7


【解决方案1】:

您必须在 ngAfterViewInit 中进行全选,因为您在 mat-select 加载值之前触发了 all() 函数。这是因为在角度生命周期中,mat select 的值仅在视图初始化后加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多