2017-09-10 6 views
0

2つの選択リストから選択した値を取得し、ユーザーがボタンを押した後にアレイから画像を表示する最も良い方法は何ですか?出来ますか?2つの選択された値を取得し、表示にボタンに移動

<ion-list> 
    <ion-item> 
    <ion-label>Gaming</ion-label> 
    <ion-select [(ngModel)]="gaming1" (ionChange)='valuechange(gaming1)'> 
     <ion-option *ngFor="let item of allList" [value]="item.values">{{item.name}}</ion-option> 
    </ion-select> 
    </ion-item> 
    <ion-item> 
    <ion-label>Gaming</ion-label> 
    <ion-select [(ngModel)]="gaming2"> 
     <ng-container *ngFor="let item of allList"> 
     <ion-option [value]="item.values" *ngIf="item.flag==0">{{item.name}}</ion-option> 
     </ng-container> 
    </ion-select> 
    </ion-item> 
</ion-list> 

<button ion-button block (click)="getData(gaming1 + gaming2)">Pass Data</button> 

コンポーネント.TSファイルは、私はボタンその作業のための機能をテストしたが、私はhtmlファイルに戻す画像を表示する方法を知らない:

public allList: any; 
     public endPlaces: any; 

     constructor(public navCtrl: NavController){ 

     this.allList=[{ 
      name:'NES', 
      values:'nes', 
      flag:0 
     },{ 
      name:'Nintendo64', 
      values:'n64', 
      flag:0 
     },{ 
      name:'PlayStation', 
      values:'ps', 
      flag:0 
     }]; 

     this.endPlaces=[{ 
      name:'Dota', 
      values:'nesn64', 
      image:'assests/img/dotajpg' 
     },{ 
      name:'CSGO', 
      values:'nesps', 
      image:'assets/img/csgo.jpg' 
     },{ 
      name:'Overwatch', 
      values:'nes', 
      image:'assets/img/overwatch.jpg' 
     }] 

     } 

     valuechange(key){ 

      for(let i = 0 ; i < this.allList.length ; i++){ 
      if(this.allList[i].values==key){ 
       this.allList[i].flag=1; 
      }else{ 
       this.allList[i].flag=0; 
      } 
      } 

     } 

     getData(selectedValue){ 

     for(let i = 0 ; i < this.endPlaces.length ; i++){ 
     if(this.endPlaces[i].values==selectedValue){ 
      console.log("Selected", this.endPlaces[i].name); 
     }else{ 
      console.log("dangggg"); 
     } 
     } 
     } 
    } 

更新:Console Log

ありがとうございました先進的で

+1

提案:ハードコードされたデータを提供するために、角度サービス(注射可能物)を使用してください。ずっと清潔でSOC! Btw、文字列を追加してgetData()に渡していますか? selectedDataパラメータをログに記録して、表示されていることをお知らせください。 –

+0

私は角度サービスに慣れていないので、コンソールログを更新しました。 Tq。 @AnjilDhamala –

答えて

0

コントローラにカンマ区切りのパラメータを渡す必要があります。

<!--In HTML file--> 
     <img src="{{matchEndPlace.image}}"> 
     <button ion-button block (click)="getData(gaming1, gaming2)">Pass Data</button> 


//in TS file 
matchEndPlace: any = {}; 
getData(gaming1, gaming2){ 
    let matchString = gaming1.toLowerCase() + gaming2.toLowerCase(); 
    this.matchEndPlace = this.endPlaces.find(e => e.values === matchString) || {}; 
} 

this.endPlaces=[{ 
      name:'Dota', 
      values:'nesn64', 
      image:'./assests/img/dotajpg' 
     },{ 
      name:'CSGO', 
      values:'nesps', 
      image:'./assets/img/csgo.jpg' 
     },{ 
      name:'Overwatch', 
      values:'nes', 
      image:'./assets/img/overwatch.jpg' 
     }] 
+0

動作していますが、 'console.log(" working "、matchString);'を追加してチェックしましたが、画像は表示されません。 @Aman –

+0

typoがありました Aman

+0

Yeah I did put the "> "画像は表示されません@Aman –

関連する問題