【问题标题】:Ionic 4: Set default ionic ion-select optionIonic 4:设置默认离子选择选项
【发布时间】:2019-06-13 03:56:20
【问题描述】:

努力在<ion-select> 控件中设置默认选项。使用 v4 rc2,但自从我开始使用最新的 v4 测试版以来,这一直是个问题。

<ion-select> 正确设置了默认选择,但我得到了小的向下插入符号。不显示所选选项。当我选择控件时,会显示警报并选择正确的选项。还是我做错了什么?

设置measureSetId 与加载measureSets[] 的顺序是否重要?

想法?感谢您对此的任何帮助。

<ion-select name="measureSetSelect" [(ngModel)]="selectedMeasureSetId">
  <ion-select-option *ngFor="let measureSet of measureSets" [value]="measureSet.measureSetId">
    {{measureSet.name}}
  </ion-select-option>
</ion-select>

public measureSets: IMeasureSet[];
public selectedMeasureSetId: number;

ngOnInit() {
  this.measureSetsApiService.query().pipe(take(1)).subscribe(result => {
      this.selectedMeasureSetId = result.find(i => i.isDefault).measureSetId || 1;
      this.measureSets = result;
    });
}

【问题讨论】:

标签: angular ionic-framework


【解决方案1】:

options列表包含对象时,需要使用[ngValue][compareWith] 试试这个代码:

<ion-select name="measureSetSelect" [(ngModel)]="selectedMeasureSet" [compareWith]="compareById">
  <ion-select-option *ngFor="let measureSet of measureSets" [ngValue]="measureSet">
    {{measureSet.name}}
  </ion-select-option>
</ion-select>

在您的组件中:

compareById(o1, o2) {
    return o1.id === o2.id
  }

更新组件部分以将 ngModel 设置为对象:

public selectedMeasureSet: IMeasureSet;

ngOnInit() {
  this.measureSetsApiService.query().pipe(take(1)).subscribe(result => {
      this.selectedMeasureSet = result.find(i => i.isDefault) || result.find(i => i.id === 1);
      this.measureSets = result;
    });
}

还可以考虑参考此文档以进一步阅读:https://medium.com/@kastepanyan24/how-to-set-selected-option-dynamically-in-angular-6-85c99958cca5

【讨论】:

  • 看起来像是一个可能的解决方案,但我认为这些在离子 v4 的 RC 中被破坏了。 github.com/ionic-team/ionic/issues/14598
  • 我在我的页面模块中添加了schemas: [ CUSTOM_ELEMENTS_SCHEMA ]。现在可以构建,但默认值仍然无法显示。你说“当你使用对象时”......有没有办法在没有对象的情况下做到这一点?我想我还有另一个ion-select-option,它只使用一个字符串数组,它也遇到了同样的问题。你确定离子组件没有错误吗?
  • 嗨-抱歉耽搁了,我认为默认设置不起作用的原因是ngModel被设置为idoption值,即ngValue被设置为目的。我将组件的一部分更改为在select 上使用IMeasureSet 对象作为ngModel。希望这行得通。
  • 我在没有其他重构的情况下尝试了您的最新版本,并且在构建时,即使弹出模式也没有选择任何内容。您使用的是 Ionic v4 吗?据我所知,我的原始代码在 v3 中运行良好,这绝对是 v4 的问题。我在 github 中向现有的未解决问题添加了一些信息,包括可能的解决方法:github.com/ionic-team/ionic/issues/15716
  • 不用担心。我很感激时间和建议。我似乎更了解离子而不是角度。对两者都相当陌生。
猜你喜欢
  • 2017-04-30
  • 2018-07-20
  • 2021-05-18
  • 2019-04-29
  • 2019-09-18
  • 2020-01-11
  • 2020-04-01
  • 2020-05-29
  • 2015-09-19
相关资源
最近更新 更多