ionic-framework - 更新数据时刷新离子选择选项的问题
问题描述
我正在开发一个 Ionic 应用程序(v.4 最终版本)...
我的问题:我有一个<ion-select>
并且这个选择有一个列表<ion-select-option>
,并且这个选项是通过 *ngFor 创建的...问题是:当我更改数组时,删除一个元素,例如,ionc-select-options 不能重新-渲染这个数组的新状态。
<ion-select>
<ion-select-option *ngFor="let question of questions">{{ question }}</ion-select-option>
</ion-select>
(我正在更新问题数组)有什么想法吗?
更新: 如果将 *ngFor 放在其他元素中,例如 div,它可以正常工作:
示例:(删除第一个元素时没有更新)
<ion-select>
<ion-select-option *ngFor="let question of questions">{{ question }}</ion-select-option>
</ion-select>
<button (click)="deleteFirst()>Delete first!</button>
(当我删除第一个元素时它正在更新)
<div *ngFor="let question of questions"></div>
<button (click)="deleteFirst()>Delete first!</button>
class MyComponent() {
public questions = ['question1','question2','question3'];
deleteFirst() {
this.questions.splice(0, 1);
}
}
解决方案
您正在使用splice 方法会更改数组的内容,但不会更改其引用。
换句话说,您应该使用不可变对象/数组,并在需要进行更改时创建新实例。
在你的情况下:
deleteFirst() {
if (this.questions.length) {
this.questions = this.questions.filter((el, index) => index > 0);
}
}
此处过滤器返回对包含满足条件的对象的数组的新引用
推荐阅读
- r - 在R中不同长度的两个向量中查找匹配值
- javascript - 如何比较 ComponentDidUpdate 中与 Redux 连接的大型数据结构的 props
- java - Implement a decimal from a String into a Stack
- r - 从日期/时间格式中提取时间
- apache-spark - 将 toEpochDate 与带有 Spark Scala 的数据框一起使用的语法 - 优雅
- android - react native - AWS + React native 使用图像注册
- php - 选择重复 uid 的最新记录
- knockout.js - 如何在不使用计算的 observables 的情况下将可观察数组上的 Knockout foreach 一次限制为 5 个?
- sql-server - 忽略字段中的换行符
- javascript - 加快滚动文本