9

我正在尝试将图像放入SelectIonic 2 的组件中:我已将图像源文件放入www/imgIonic 2 项目的文件夹中。但是,使用简单的img-tag 不会显示任何使用此代码的图像:

<ion-list>
  <ion-item>
    <ion-label>Gaming</ion-label>
    <ion-select [(ngModel)]="gaming">
      <ion-option value="nes">
        NES
        <img src="img/myImage.png">
      </ion-option>
    </ion-select>
  </ion-item>
</ion-list>

有人有什么主意吗?

4

3 回答 3

3

ion-select 组件不允许对其自身进行直接自定义,并且您添加到 ion-select 和 ion-option 中的任何不符合 ionic 文档的内容都将在生成的输出中被忽略。

您不能向组件添加类或样式。

一种方法是将 ion-select 放在带有 class 的父元素(如 div 或 ion-row 等)中,并使用.parentclass childElement选择器应用 CSS 规则。

要在选项中显示图像,请检查以下功能:

    prepareImageSelector() {
    setTimeout(() => {
        let buttonElements = document.querySelectorAll('div.alert-radio-group button');
        if (!buttonElements.length) {
            this.prepareImageSelector();
        } else {
            for (let index = 0; index < buttonElements.length; index++) {
                let buttonElement = buttonElements[index];
                let optionLabelElement = buttonElement.querySelector('.alert-radio-label');
                let image = optionLabelElement.innerHTML.trim();
                buttonElement.classList.add('imageselect', 'image_' + image);
                if (image == this.image) {
                    buttonElement.classList.add('imageselected');
                }
            }
        }
    }, 100);
}

我已经使用离子选择实现了颜色和图像选择器。请参考https://github.com/ketanyekale/ionic-color-and-image-selector

您还可以在Ionic select input of colors查看答案

于 2018-05-23T15:29:48.407 回答
2

我是这样实现的。

<ion-select (click)="loadFlags()" formControlName="pays"  value="select-country">           
    <ion-select-option  value="select-country" >select your country </ion-select-option>
    <ion-select-option *ngFor="let country of countries" value="{{country.name}}">{{country.name}}</ion-select-option>
</ion-select>

这是我的 .ts 文件

loadFlags() {
    setTimeout(function(){ 
     let radios=document.getElementsByClassName('alert-radio-label');
     for (let index = 1; index < radios.length; index++) {
        let element = radios[index];
        element.innerHTML=element.innerHTML.concat('<img class="country-image" 
       style="width: 30px;height:16px;" src="'+countries[index-1].flag+'" />');
      }
  }, 1000);
}

超时是让系统创建警报组件。我的 Json 是一个数组,其中包含 {name:"Cameroon",flag:" https://restcountries.eu/data/cmr.svg "}等元素

这是我的结果

于 2019-08-30T11:49:01.393 回答
0

在你的基础上,我想出了一个更简洁的解决方案!</p>

方法'prepareImageSelector'用作控件的Click事件。</p>

谢谢!</p>

   image: string = 'English';
 
   prepareImageSelector() {
    setTimeout(() => {
      let buttonElements = document.querySelectorAll('div.alert-radio-group button');
      if (!buttonElements.length) {
        this.prepareImageSelector();
      } else {
        for (let index = 0; index < buttonElements.length; index++) {
          let buttonElement = buttonElements[index];
          let optionLabelElement = buttonElement.querySelector('.alert-radio-label');
          let image = optionLabelElement.innerHTML.trim();
          if (image == this.image) {
            optionLabelElement.innerHTML += '<img  src="assets/img/English.png" style="width:20px;height:20px;float:right;"/>';
          }
        }
      }
    }, 100);
  }

于 2019-03-01T08:11:19.700 回答