分组复选框并有条件地显示输入字段

Grouping checkboxes and displaying input field conditionally

我的 Angular 应用程序中有以下表单,我想根据复选框选择显示不同的输入字段。 我已经使用 [(ngModel)] 绑定值并使用 *ngIf 我正在尝试 show/hide 下面的文本字段。这个工作得很好,但我无法将 'checked' 设置为 emailField。谁能告诉我我做错了什么。

默认情况下,我希望选中 emailField 并显示相应的输入字段。

<form class="reminder-form">
    <div class="form-check">
        <input  [(ngModel)]="emailField" class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
        <label class="form-check-label" for="exampleRadios1">
          Email
        </label>
      </div>
      <div class="form-check">
        <input  [(ngModel)]="smsField" class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
        <label class="form-check-label" for="exampleRadios2">
          SMS
        </label>
      </div>

      <div class="email-box" *ngIf='emailfield'>
        <label class="form-check-label" for="noRemind">
            Email
        </label>
        <input type="email" name="email" class="form-control new-reading-input" placeholder="{{accountEmail}}">
    </div>
    <div class="sms-box" *ngIf='smsField'>
        <label class="form-check-label" for="noRemind">
            SMS
        </label>
        <input type="number" name="sms" class="form-control new-reading-input" placeholder="{{accountSMS}}">
    </div>
</form>

您需要 bind single variable 两个无线电输入:

app.component.html
<form class="reminder-form">
    <div class="form-check">
        <input  [(ngModel)]="radioValue" class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
        <label class="form-check-label" for="exampleRadios1">
          Email
        </label>
    </div>
    <div class="form-check">
        <input  [(ngModel)]="radioValue" class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
        <label class="form-check-label" for="exampleRadios2">
          SMS
        </label>
    </div>

    <div class="email-box" *ngIf='radioValue === "option1"'>
        <label class="form-check-label" for="noRemind">
            Email
        </label>
        <input type="email" name="email" class="form-control new-reading-input" placeholder="{{accountEmail}}">
    </div>
        <div class="sms-box" *ngIf='radioValue === "option2"'>
            <label class="form-check-label" for="noRemind">
            SMS
        </label>
            <input type="number" name="sms" class="form-control new-reading-input" placeholder="{{accountSMS}}">
    </div>
</form>
app.component.ts
import { Component, VERSION } from "@angular/core";

@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent {
  name = "Angular " + VERSION.major;
  accountEmail = "test@site.domain";
  accountSMS = "sms";
  radioValue = "option1";
}