Mat-button-toggle餐饮用于多选

发布于 2025-02-11 14:52:21 字数 752 浏览 0 评论 0原文

我目前有一个mat-button-toggle-group Active,如下所示: 该按钮的数组为1,2,3,全部没有。多选已启用了多选,因此可以选择以下选项之一。我该怎么办,如果选择了1,2或3,然后选择“无”,则清除了先前的编号选项,以便仅选择任何选项。同样,如果选择了一切。

<mat-button-toggle-group #group="matButtonToggleGroup" style="margin-left: -100%; margin-right:20px" appearance="legacy" name="fontStyle" aria-label="Font Style"  [value]="selectedTime" (change)="onValChange(group.value)"  multiple>
 <mat-button-toggle style="color: black" disabled>Time</mat-button-toggle>
 <mat-button-toggle *ngFor="let time of getTime()" style="outline: none !important;" [value]="time.timeno" (click)="changeTimeSelection(time.timeno, time.begin, time.end)">{{time.timeno}}</mat-button-toggle>
</mat-button-toggle-group>

I currently have a mat-button-toggle-group active as follows:
The button is populated with an array of 1,2,3,All,None. Multi-select has been enabled so more than one of the following options can be selected. How can I make it that if 1,2 or 3 is selected and then 'None' is selected that the previous numbered options are cleared so that only None is selected. Likewise if All is selected.

<mat-button-toggle-group #group="matButtonToggleGroup" style="margin-left: -100%; margin-right:20px" appearance="legacy" name="fontStyle" aria-label="Font Style"  [value]="selectedTime" (change)="onValChange(group.value)"  multiple>
 <mat-button-toggle style="color: black" disabled>Time</mat-button-toggle>
 <mat-button-toggle *ngFor="let time of getTime()" style="outline: none !important;" [value]="time.timeno" (click)="changeTimeSelection(time.timeno, time.begin, time.end)">{{time.timeno}}</mat-button-toggle>
</mat-button-toggle-group>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

相权↑美人 2025-02-18 14:52:21

您可以在ChangeTimesElection中按下或弹出所需的值

changeTimeSelection(timeNo) {
    if (timeNo != 'All') {
      let isAllSelected = this.buttonValues
        .filter((v) => v.timeNo != 'All' && v.timeNo != 'None')
        .every((v) => this.selectedState.includes(v.timeNo));
      if (isAllSelected && !this.selectedState.includes('All')) {
        this.selectedState.push('All');
      } else {
        this.selectedState = this.selectedState.filter((s) => s != 'All');
      }
    }
    if (timeNo != 'None' && this.selectedState.length > 1) {
      this.selectedState = this.selectedState.filter((s) => s != 'None');
    }
    if (timeNo == 'All' && this.selectedState.includes('All')) {
      this.selectedState = this.buttonValues
        .filter((v) => v.timeNo != 'None')
        .map((v) => v.timeNo);
    }
    if (timeNo == 'None' && this.selectedState.includes('None')) {
      this.selectedState = ['None'];
    }
  }

。 %2fapp%2ftoggle.component.ts,src%2FAPP%2FAPP.COMPONEN.PONENT.HTML“ rel =” nofollow noreferrer“> demo

You can push or pop required values inside changeTimeSelection method something like

changeTimeSelection(timeNo) {
    if (timeNo != 'All') {
      let isAllSelected = this.buttonValues
        .filter((v) => v.timeNo != 'All' && v.timeNo != 'None')
        .every((v) => this.selectedState.includes(v.timeNo));
      if (isAllSelected && !this.selectedState.includes('All')) {
        this.selectedState.push('All');
      } else {
        this.selectedState = this.selectedState.filter((s) => s != 'All');
      }
    }
    if (timeNo != 'None' && this.selectedState.length > 1) {
      this.selectedState = this.selectedState.filter((s) => s != 'None');
    }
    if (timeNo == 'All' && this.selectedState.includes('All')) {
      this.selectedState = this.buttonValues
        .filter((v) => v.timeNo != 'None')
        .map((v) => v.timeNo);
    }
    if (timeNo == 'None' && this.selectedState.includes('None')) {
      this.selectedState = ['None'];
    }
  }

Here is working demo

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文