概述:
我有一个列表,使用管道将两个数组与ngfor绑定在一起。我将数组绑定在typeID上。
一个数组列出了所有可用的类型,另一个数组保留了选定的类型以及一个附加选项。 注意:这些数组仅共享2个属性,即名称和ID
问题:
因为当第二个数组中的数据发生更改时,我的ngFor绑定到了第一个数组,所以什么也没有更新,因此在那一刻,我不得不回想起我的http方法,该方法获取与更新列表完全相同的数据。
我需要一种方法来强制重新渲染,而不必在第二个数组中的某些内容每次更改时都调用我的api
StackBlitz:
答案 0 :(得分:0)
您可以使用 ngIf 和 setTimeout 进行ngFor重新渲染。致电override func viewDidLoad() {
super.viewDidLoad()
fsCalendarObject.placeholderType = .none
}
而不是this.reload()
this.getPrimary()
在 ngIf
中包装 ngForreload() {
this.show = false;
setTimeout(() => this.show = true);
}
答案 1 :(得分:0)
您可以从角铁芯导入VideoCapture
并触发ChangeDetectorRef
。这可能不是最佳方法,但应根据情况重新渲染组件
答案 2 :(得分:0)
您可以为此数组设置新的引用,它将重新呈现,
this.secondary = [...this.secondary];
答案 3 :(得分:0)
使用经过调整的onik解决方案版本,我设法用更少的代码行解决了这个问题
解决方案
do {
let response = try JSONDecoder().decode(Response.self, from: data)
print(response) // Response(id: "A40F8EBE-7E34-126B-FFA4-ADC7A4D58300", url: "https://backendlessappcontent.com/AABE5C4B-AA58-955C-FF16-27B64A185300/737368FE-4963-275B-FF3E-D909B3CCC500/files/qr_codes/9a53c126-1a67-4a71-8072-83c056db4338.png")
} catch {
print(error)
}
Stackblitz