2017-02-13 18 views
0

JSONオブジェクトに格納されている値を読み取るはい/いいえラジオボタンがあります。最初に、jsonオブジェクトが空であるかどうか、またはラジオボタンのフィールドがnullであるかどうかを確認します。その場合、私は両方のラジオボタンをチェックしないで表示しています。次に、jsonオブジェクトのフィールドに真の値が表示されているかどうかをチェックしています。イエスの場合はyesラジオボタンをチェックし、同様にfalse値をチェックし、noラジオボタンをチェックします。私はビューで同じまたは同様のコードをたくさん使用しているようだが、私はこれを行うより効率的な方法があるのだろうかと思っていた。私のコードは次のようになります。ありがとう。より効率的な* ngIf条件を使用する方法はありますか

  <!-- json array will be empty when first coming to page, display no boxes checked --> 
      <div *ngIf="(questions | json) === '{}' || questions.partYear == null"> 
       <input type="radio" id="yesRadio" formControlName="partYear" name="partYear" value="yes" [(ngModel)]="questions.partYear">Yes<br/> 
       <input type="radio" id="noRadio" formControlName="partYear" name="partYear" value="no" [(ngModel)]="questions.partYear">No 
      </div> 

      <!-- user comes back to page, populate box that was checked during sesssion --> 
      <div *ngIf="questions?.partYear === 'yes' || questions?.partYear === true"> 
       <input type="radio" id="yesRadio" formControlName="partYear" name="partYear" value="yes" checked [(ngModel)]="questions.partYear">Yes 
      </div> 
      <div *ngIf="questions?.partYear === 'no' || questions?.partYear === false"> 
       <input type="radio" id="yesRadio" formControlName="partYear" name="partYear" value="yes" [(ngModel)]="questions.partYear">Yes 
      </div> 

      <div *ngIf="questions?.partYear === 'yes' || questions?.partYear === true"> 
       <input type="radio" id="noRadio" formControlName="partYear" name="partYear" value="no" [(ngModel)]="questions.partYear">No 
      </div> 
      <div *ngIf="questions?.partYear === 'no' || questions?.partYear === false "> 
       <input type="radio" id="noRadio" formControlName="partYear" name="partYear" value="no" checked [(ngModel)]="questions.partYear">No 
      </div> 
+0

[この紹介](https://juristr.com/blog/2016/11/ng2-binding-radiobutton-lists/)で、角度のラジオボタンを参照してください。あなたのコードを改善するための第一歩は、同じ '* ngIf'条件を持つように見えるので、ラジオボタン1と3を1つのdivに、2&4を別のものに移動することです。 –

+0

あなたはngSwitchを使用できます –

答えて

0

あなたはこのようなことをすることができ、* ngIfステートメントの必要性を完全に否定できます。

<div> 
    <input type="radio" id="yesRadio" formControlName="partYear" name="partYear" [checked]="questions?.partYear === 'yes' || questions?.partYear === true" (click)="questions.partYear = 'yes'">Yes<br/> 
    <input type="radio" id="noRadio" formControlName="partYear" name="partYear" [checked]="questions?.partYear === 'no' || questions?.partYear === false" (click)="questions.partYear = 'no'">No 
</div> 
関連する問題