0

我在JSON中使用以下格式的API。Angular2,Ionic2:如何使用ngModel嵌套* ngfor中的單選按鈕的2way綁定?

enter image description here

我想問題&選擇格式的形式來顯示這一點。我正在嘗試使用單選按鈕顯示選項。但我的ngModel不起作用。我想在我的.ts文件中使用ngModel訪問選定選項的整個對象。

這裏是我的TS碼

export class Quiz implements OnInit { 
    testcontents: Array<any>=[]; 
    choiceObj:any; 

constructor(public navCtrl: NavController, public navParams: NavParams,public http:Http) {} 
    ngOnInit() 
    { 
     this.launchfunc(); 
    } 
    launchfunc() 
    { 
    this.http.post('launchtest/getTestContent',this.launchtestobj).subscribe(resp=>{ 
     this.testcontents = resp.data.questions; 
    }); 
    } 

    selectChoice($event) 
    { 
     console.log("12312341234",event); 
     console.log("obj",this.choiceObj); 
    } 

這裏是我的html代碼

<ion-content padding> 
<div *ngFor="let qContent of testcontents; let i = index"> 
    {{i+1}} {{qContent.questionText}} 
    <div *ngFor="let choiceObj of qContent.choice"> 
     <input name='options' type='radio' [value]='choiceObj' [(ngModel)]='choiceObj.choice' (ngModelChange)="selectChoice(choiceObj)" /> 
     <label [for]='choiceObj'>{{choiceObj.choiceText}}</label> 
    </div> 
</div> 

這是上面的代碼輸出。 enter image description here 我不明白爲什麼是obj undefined。 我遇到了ngModel的問題。我不理解我應該如何將我的ngModel作爲我應該如何訪問打字稿文件中的「choiceObj」。可以有人請幫助我。

回答

2

該模型是選擇對象中不存在的choiceObj.choice。 你需要「choiceObj.choiceId」

<ion-content padding> 
<div *ngFor="let qContent of testcontents; let i = index"> 
    {{i+1}} {{qContent.questionText}} 
    <div *ngFor="let choiceObj of qContent.choice"> 
     <input name='options' type='radio' [value]='choiceObj' [(ngModel)]='choiceObj.choiceId' (ngModelChange)="selectChoice(choiceObj)" /> 
     <label [for]='choiceObj'>{{choiceObj.choiceText}}</label> 
    </div> 
</div> 
+0

來取代它,如果它是有用的,可以請你把它標記爲一個答案嗎? – Yalin

+0

非常感謝。有效。你可以請看看這個https://stackoverflow.com/questions/44455814/angular2-typescript-how-to-put-the-radio-button-checked-when-in-an-array-這 –

+0

我會欣賞如果您可以將其標記爲正確答案:-)。 我現在來看看。 – Yalin

相關問題