如何设置ion-option的默认选择值?

时间:2016-12-14 15:31:36

标签: html angular ionic-framework ionic2

我正在使用Ionic v2,在显示页面时无法设置所选值。

<ion-select [(ngModel)]="company.form">
    <ion-option *ngFor="let form of forms" [value]="form" [selected]="true">{{form.name}}</ion-option>
</ion-select>

我也试过了checked,但这也不行。我怎样才能做到这一点?

Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.13
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.45

9 个答案:

答案 0 :(得分:12)

问题似乎是ion-option不喜欢rc3中的对象。我必须只处理对象的id部分并编写一个单独的changehandler来找到所需的对象并将其设置为值。

  <ion-select [ngModel]="company.form.id" (ngModelChange)="companyFormSelected($event)" okText="Ok" cancelText="Mégsem">
    <ion-option *ngFor="let form of forms" [value]="form.id" [selected]="form.id == company.form.id">{{form.name}}</ion-option>
  </ion-select>

改变处理程序:

companyFormSelected(newform) {
    let selectedForm = this.forms.find((f)=>{
      return f.id === newform;
    });
    this.company.form=selectedForm;
}

这似乎是rc3中的一个错误,但我不知道在哪里可以报告错误。我打开了topic on ionic forum

答案 1 :(得分:6)

如果处理默认值的xor对象,最干净的方法是为[compareWith]属性提供比较功能。此函数接受参数中的2个对象,如果相等则返回true。这样,将在开始时选择模型中的现有值。如果在选择之外的模型中添加了新数据,这也将起作用。

以下示例摘自Ionic官方文档

<ion-item>
  <ion-label>Employee</ion-label>
  <ion-select [(ngModel)]="employee" [compareWith]="compareFn">
    <ion-option *ngFor="let employee of employees" [value]="employee"></ion-option>
  </ion-select>
</ion-item>

compareFn(e1: Employee, e2: Employee): boolean {
  return e1 && e2 ? e1.id === e2.id : e1 === e2;
}

答案 2 :(得分:5)

<ion-select [(ngModel)]="name">// binding the value available from ts file
    <ion-option *ngFor="let form of forms; let idx = index" [value]="form.name"  selected="{{(idx==0).toString()}}">{{form.name}}</ion-option>
</ion-select>

在你的ts文件中

name = this.forms[0].name //assign the variable name to the first index of your array

答案 3 :(得分:4)

您无需使用所选属性,也无需[已选择]

<ion-select [(ngModel)]="company.form.id" name="company.form.id">
    <ion-option *ngFor="let form of forms" value="{{ form.id }}">
      {{ form.name }}
    </ion-option>
</ion-select>

答案 4 :(得分:1)

在离子选项内,您可以

<ion-option [attr.selected]="(form.name == name) ? true : null"> {{ form.name }} </ion-option>

答案 5 :(得分:1)

  in html---->

     <ion-item text-center >
        <ion-select  [(ngModel)]="selectedQuestion" placeholder="Choose Security Question" >
          <ion-option *ngFor="let q of questionArray let i=index"  selected="{{(i==defaultSelectQuestion).toString()}}"  >
             {{q}}
            </ion-option>
        </ion-select>
      </ion-item>


in ts---->
//if u dont want any default selection
    this.defaultSelectQuestion = -1; 

//if first element should be your default selection
  this.defaultSelectQuestion = 0;



this.selectedQuestion=this.questionArray[this.defaultSelectQuestion]

答案 6 :(得分:1)

这对我有用。

在html中:

<ion-select [(ngModel)]="company.form">
    <ion-option value="frm1"> Form 1 </ion-option>
    <ion-option value="frm2"> Form 2 </ion-option>
</ion-select>

在ts中:

company = {
   form:null
}; 

constructor(){
   this.company.form = "frm1";
}

答案 7 :(得分:0)

ion Select标签只需将数组分配给ngModel并选择默认值。简单

答案 8 :(得分:0)

<ion-select ([ngModel])="dropdown1">
  <ion-select-option value="1">Item1</ion-select-option>
  <ion-select-option value="2">Item2</ion-select-option>
</ion-select>

以下内容无效:

const a = 2; dropdown1 = a;

但是以下方法可以工作:

const a = 2; dropdown1 = a + "";

将选择选项值视为字符串,因此应将字符串值分配给模型变量,以使比较不会失败。