【问题标题】:Check radio button by default in a radio button group list in Angular?默认情况下在Angular的单选按钮组列表中检查单选按钮?
【发布时间】:2019-06-28 09:34:25
【问题描述】:

我正在使用 Angular 7 和 HTML。我在加载页面时遇到了检查默认单选按钮的问题。我能够获得价值,但在加载页面时无法检查单选按钮。请任何人指导我如何解决这个问题。

StackBlitz Link

//我的ts文件

paymentModeStatus: string;
selectedValueForPaymentModeChange = 'cash';
paymentModeList: any = [];

public constructor() {}

ngOnInit() {
  this.getPaymentModeList();
}
getPaymentModeList() {
  this.paymentModeList = [{
      'checked': true,
      'name': 'Cash',
      'value': 'cash',
    },
    {
      'checked': false,
      'name': 'Pay to Accounts',
      'value': 'accounts',
    }
  ];
}

//我的html文件

<div style="font-weight: bold">Payment Mode:</div>

<label 
  style="padding: 0 5px 0 20px" 
  *ngFor="let paymentMode of paymentModeList">
  <input 
    type="radio" 
    name="paymentMode" 
    required="false"
    [(ngModel)]="paymentModeStatus" 
    [value]="paymentMode.name"
    (click)="paymentModeStatusAction(paymentMode.value)"             
    [checked]='paymentMode.checked'>
    {{paymentMode.name}}
</label>
<pre>{{ paymentModeStatus }}</pre>

【问题讨论】:

    标签: html angular ngfor radiobuttonlist


    【解决方案1】:

    由于您指定了[(ngModel)]="paymentModeStatus"[value]="paymentMode.name",因此您必须将paymentModeStatus 设置为您想要设置为默认付款方式的name

    只需将此添加到您的ngOnInit

    this.paymentModeStatus = this.paymentModeList[0].name;
    

    这里有一个Working Sample StackBlitz 供您参考。

    【讨论】:

    • 很高兴我能帮上忙。请考虑将其标记为答案(✔️)以结束循环。
    • 我是 stacoverflow 的新手。我无法获得足够的声誉,无法对您的答案进行绿色标记。
    • @monir,AFAIK,您可以将问题的答案标记为具有任何声誉的解决方案。所以你应该能够做到。您应该在答案上看到一个复选标记。单击它应将其标记为解决方案。
    【解决方案2】:

    这是因为 Checked 属性不需要值

    https://www.w3schools.com/tags/att_input_checked.asp

    只要check属性存在,就会检查元素。

    来自上面的链接

    <form action="/action_page.php">
      <input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>
      <input type="checkbox" name="vehicle" value="Car" checked> I have a car<br>
      <input type="submit" value="Submit">
    </form>
    

    编辑 我已使用以下代码修改了您的 html [buttons-checkbox.html] 以显示默认检查

    <style>
      label {
        padding: 0 5px 0 20px
      }
    </style>
    
    <div><b>Payment Mode:</b></div>
    
      <label *ngFor="let paymentMode of paymentModeList">
    
        <input 
          type="radio" 
          name="paymentMode" 
          required="false" 
          [(ngModel)]="paymentModeStatus" 
          [checked]="paymentMode.checked == 'true'"
        />
    
        {{paymentMode.name}} {{paymentMode.checked}}
    
      </label>
    
    <pre>{{ paymentModeStatus }}</pre>
    

    【讨论】:

    • 还请建议如何在模板中使用*ngFor 来实现 OP 的目标。
    • 已编辑(我明白为什么这对 OP 有用)谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 2019-03-29
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多