簡體   English   中英

模板驅動表單中的單選按鈕

[英]Radio buttons in Template-Driven Forms

每次頁面加載最后一個單選按鈕時總是被選中。 我知道它與 Id 有關,但我不知道如何解決它。

國家數組

countryA = [{name : "Finland"}, {name : "china"},{name :  "USA"}]

測試.html

            <form #filterForm="ngForm" (ngSubmit)="addFilter(filterForm)" autocomplete="off">
                <div class="row">
                    <div class="col-12" style="border: 1px solid red">
                        <div *ngFor="let x of country">
                            <label for="{{x.name}}"> {{x.name}} </label>
                            <input type="radio" id="{{x.name}}" value="{{x.name}}" name="countries" [(ngModel)]='x.name' >
                        </div>
                    </div>
                    <!-- <div class="col-12" style="border: 1px solid red">b</div>
                    <div class="col-12" style="border: 1px solid red">c</div>
                    <div class="col-12" style="border: 1px solid red">D</div> -->
                </div>
            </form>
            hh : {{filterForm.value | json}}

您應該向每個國家/地區添加一個選定的屬性以用作單選按鈕值的 ngModel:

在構造函數中:

this.country = this.country.map(item =>({ name: item.name , selected : false }));

在 html 中:

<div class="col-12" style="border: 1px solid red">
    <div *ngFor="let x of country; index as i">
        <label for="{{x.name}}"> {{x.name}} </label>
        <input type="radio" id="{{x.name}}" value="{{x.name}}" name="countries" [(ngModel)]="country[i].selected">
    </div>
</div>

檢查演示

您正在將ngModel應用於 'x.name',這是檢查它的原因。 您可以創建一個變量selectedRadio並分配單選按鈕的值:

<div *ngFor="let x of country">
    <label for="{{x.name}}"> {{x.name}} </label>
    <input type="radio" 
        id="{{x.name}}" 
        value="{{x.name}}"
        [(ngModel)] ="selectedRadio"
        name="countries">
</div>
<p> {{ selectedRadio | json }} </p> 

打字稿:

selectedRadio: any;

可以在此處查看stackblitz 示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM