angular - 从角度材料列表中删除带有标题的项目
问题描述
我有带标题的材料清单。类似的项目分组在标题下。我还在其中添加了删除按钮。如果我从列表中删除最后一项,那么标题也应该删除。我试过的如下:
https://stackblitz.com/edit/angular-material-list-brenrk?file=app/app.component.ts
但它并没有被删除。请帮忙。
解决方案
默认情况下,Angular 的更改检测会循环遍历您的数组,并检查是否存在对先前更改的引用更改。现在,您没有更改任何引用,只是这些对象的一个属性。由于数组中的对象引用没有改变,Angular 不会识别出发生了变化。我建议使用不可变运算符,它不会改变先前的对象,而是创建一个现在的对象:
removeFromList(obj){
this.valmap = this.valmap
.map(element => {
return {category: element.category, values: element.values.filter(fruit => fruit.name !== obj.name)}
})
.filter(element => element.values.length > 0)
}
你的另一个选择是trackBy
在你的˙ngFor`中引入,当属性改变时告诉Angular。
推荐阅读
- c - 将 sqlite 连接到 C 程序
- python - QPlainTextEdit 文本并在窗口的新行中增加文件名
- hive - 如何在 apache hive 中插入日期、布尔值?
- python - 我怎样才能以不同的方式编写它,以便不总是调用夹具?
- svn - Trac 可以从其他服务器连接到 SVN 存储库吗?
- javascript - 使用 RegExp 提取特定字符串
- angular - appendComponentToBody 在角度 2 中不起作用
- kubernetes - 如何在 kubernetes 中为服务端点 url 使用服务名称而不是外部 IP/域名
- angularjs - md-datepicker 不适用于引导模式,而适用于 angularjs 中的简单页面
- codeigniter - 如何从第一个结果数组中检查名称是否已存在