【问题标题】:How to handle multiple radio buttons - Angular如何处理多个单选按钮 - Angular
【发布时间】:2020-01-29 09:05:06
【问题描述】:

这里我有一个是或否问题的列表,并提供单选按钮来选择是或否。并且我提供用户单独回答每个问题,并提供两个按钮,即全部是和全部否。

个人选择很好,但单击按钮选择全部是或全部否我不知道绑定以及如何收集每个问题的值。

<div *ngFor="let queestion of questionsList; let i=index; ">
	<label>
			{{question.id}} 
		<input type="radio"  [name]='i+1'>
			<span>Yes</span>
		<input type="radio"   [name]='i+1' >
			<span>No</span><br>
	</label>
</div>
<div style="text-align: center">
	<button type="button">All Yes</button>
	<button type="button">All No</button>	
	<button type="button">Submit</button>
	<button type="button">Clear</button>	
</div>

【问题讨论】:

    标签: angular radio-button


    【解决方案1】:

    为单选按钮设置[value] 属性,而不是使用ngModel 进行双向绑定,并将isSelected 之类的属性添加到您的模型中,以便为所有类似的东西设置真/假

    <div *ngFor="let question of questionsList; let i=index; ">
        <label>
                {{question.id}} 
            <input type="radio" [value]="true" [(ngModel)]="question.isSelected"  [name]='i+1'>
                <span>Yes</span>
            <input type="radio" [value]="false" [(ngModel)]="question.isSelected"  [name]='i+1' >
                <span>No</span><br>
        </label>
    </div>
    

    在你的组件中

    selectAll(){
        this.questionsList.forEach(i=>{
          i.isSelected=true;
        })
      }
    
      unSelectAll(){
        this.questionsList.forEach(i=>{
          i.isSelected=false;
        })
      }
    

    Demo

    【讨论】:

    • 感谢您的回答..在这里我最初不想填写任何答案。但在这种情况下,当它自己加载时,它会被正确选择..那么如何处理?
    • @royal 只需从您的数据数组中删除isSelected 属性并设置数据数组的类型stackblitz.com/edit/angular-iimmgg
    • @jitender,Shafeeq,不使用你已经拥有的[value] [(ngModel)],简单地给变量“question.isSelected”赋值
    • @Eliseon 你尝试过是否可行我认为如果我们删除 [value] 就行不通
    【解决方案2】:

    首先将按钮类型更改为类型标记。然后你可以为标签分配 id 和 value。

    其他解决方案是您可以将更改或单击事件添加到按钮和单击方法,您可以发送一些值以在您的 javascript 中运行。

    【讨论】:

      【解决方案3】:

      这只是一个使用单选按钮的示例

      .HTML

      <div class="form-check-inline">
          <label class="form-check-label">
          <input type="radio" class="form-check-input"  checked="!checked" name="radio"  [(ngModel)]="radio" [value]="true">active
        </label>
      </div>
      <div class="form-check-inline">
        <label class="form-check-label">
          <input type="radio" class="form-check-input" 
                            checked="!checked"name="radio1"  [(ngModel)]="radio1" [value]="true">Deactive
        </label>
      </div>
      <button (click)="print( radio,radio1)"> shaa</button>
      

      .ts

        radio=false;
      radio1=false;
        print(){
        console.log(this.radio,this.radio1)
        this.radio = false;
        this.radio1 = false;
      }
      

      Stackbliz example

      【讨论】:

      • Shafeeq,不要使用checked 或[value] 你已经有[(ngModel)],简单地给变量“radio”赋值
      猜你喜欢
      • 2018-11-19
      • 2012-08-28
      • 2020-07-23
      • 2015-01-17
      • 2017-08-04
      • 2020-06-26
      • 2018-06-09
      • 2018-10-10
      • 1970-01-01
      相关资源
      最近更新 更多