2017-04-05 9 views
0

私はここで問題を解決する方法を知りました。申し込みページには、2つのボタンがあります。コンポーネントはそれぞれ<btn-gender>で、選択するジェンダーが表示されます。角2 - グループ内のコンポーネントを選択する機能

問題は、それぞれが選択されていることを理解するロジックを作成する必要があることです。私はまた、それに答えたくない人のためのボタンがあることを覚えておいてください。私は簡単に<ion-select>を使ってそれを解決することができましたが、私はそれが次のレイアウトで期待されるように本当にボタンを使う必要があります。

あなたは私がそれをどのように解決できるかについての提案はありますか?おかげ

はHTML:あなたは配列を作成し、選択されているのトラックを保つことができる

<ion-grid> 
    <ion-row> 
     <ion-col> 
     <h4 text-center>Are you:</h4> 
     </ion-col> 
    </ion-row> 
    <ion-row > 
     <ion-col> 
     <btn-gender [text]="textMale" [imageURL]="imageMale" [(ngModel)]="male"></btn-gender> 
     </ion-col> 
     <ion-col> 
     <btn-gender [text]="textFemale" [imageURL]="imageFemale" [(ngModel)]="female"></btn-gender> 
     </ion-col> 
    </ion-row> 
    <ion-row> 
     <button ion-button block>I prefer not to answer this</button> 
    </ion-row> 
    <ion-row> 
     <button ion-button block [disabled]="!isValid()" (click)="next()">Continue</button> 
    </ion-row> 
    </ion-grid> 

答えて

0

<ion-row > 
    <ion-col> 
    <btn-gender [text]="textMale" [imageURL]="imageMale" [(ngModel)]="genders" (click)="activate('male')"></btn-gender> 
    </ion-col> 
    <ion-col> 
    <btn-gender [text]="textFemale" [imageURL]="imageFemale" [(ngModel)]="genders" (click)="activate('female')"></btn-gender> 
    </ion-col> 
</ion-row> 

activate(gender: string): void { 

    // Second condition included as per OP's own solution 
    if (this.genders.indexOf(gender) === -1 && !this.genders.length) { 
    this.genders.push(gender); 
    } 
    else { 
    this.genders.splice(this.genders.indexOf(gender), 1); 
    } 
} 
+0

それは魔法のように動作します!ありがとう@Chrillewoodz、上記のコードで変更したのは、配列が空であるかどうかをチェックする行を追加することだけでした。なぜなら、2つのオプションを追加していたからです。 { if(this.genders.indexOf(gender)=== -1 && this.genders.length === 0){ this.genders.push(gender);アクティブ(ジェンダー:文字列):void { } else { this.genders.splice(this.genders.indexOf(gender)、1); } }「 –

+0

甘いですが、それが役に立ったら答えを受け入れるのを忘れないでください。私はあなたの修正を含める答えを更新します。 – Chrillewoodz

関連する問題