我用角4建立显示的书籍标题,描述的列表,像下面的评级为心中的应用程序:角:ngFor未更新的新项目
<h2>{{book.title}} <small *ngFor="let h of hearts">❤</small></h2>
为了让心中的权数我创造了这个吸
get hearts() {
if (this.book.rating < 0) {
return new Array(0);
}
return new Array(this.book.rating);
}
对于初始帐套这工作得很好。但是,当我将一个新项目添加到书籍阵列时,只显示一个心脏。然而所有其他属性都设置正确。只要我改变了一些东西,心也会更新并正确显示。
任何猜测我在做什么错?
你的代码效率很低。每次运行变更检测时,都会调用绑定到组件模板中的方法或getter。如果它返回一个新的对象实例(在你的案例中是数组实例),Angular会得到这样的印象:值永远不会改变。这甚至应该导致像“表达已经改变......”的错误,并且你的应用程序的性能会很糟糕。相反,将getter的结果分配给一个字段并绑定到这些字段以避免此问题,并且只在数组内容实际发生更改后才更新该字段。 –
它看起来像变化检测问题。你正在使用什么变化检测策略。您可以手动进行推送,也可以添加'private changeDetectorRef:ChangeDetectorRef',然后添加'this.changeDetectorRef.markForCheck();'您需要它的地方 –