代码之家  ›  专栏  ›  技术社区  ›  user3097695

从Input()选中的Angular material单选按钮

  •  0
  • user3097695  · 技术社区  · 8 年前

    我有以下html文件

    <mat-menu #appMenu="matMenu" class="mat-menu-panel-max-width-none">
    <mat-radio-group #radioGroup>
    <div *ngFor="let item of items, let i=index">
          <mat-radio-button color="primary"
           [value]="item.value"
           [checked]="item.selected"
           class="mat-menu-item"
           (change)="handleSelection(i)">
       {{item.name}}
      </mat-radio-button>
        </div>
    </mat-radio-group>
     </mat-menu>
    

    和ts文件。

      import { Component, EventEmitter, Input, Output } from '@angular/core';
      @Component({
        selector: 'item-selection',
        templateUrl: './item-selection.component.html',
     })
    export class ItemsComponent {
     @Input() items: any;
     @Output() electionHandler = new EventEmitter();
    
     constructor() { }
    
     handleSelection(id) {
     electionHandler.emit({id:id});
     }
     }
    

    以下是我的代码正在执行的步骤:

    1. 从菜单中选择一个项目。
    2. 在此之后,我仍然看到该项目被选中。其目的是在每次操作后重置所有未选中的项。

    怎么了?

    1 回复  |  直到 8 年前
        1
  •  0
  •   andrew ferguson    8 年前

    而不是试图手动管理单选按钮的“选中”状态。我个人会尝试利用本机HTML功能,并为收音机提供相同值的相同'name'值,或者如果您使用反应式表单,formControlName属性也会实现相同的功能。当用户从表单中选择时,它们会自己“检查”和“取消检查”。