ng-zorro-antd中踩过的坑
ng-zorro-antd中踩过的坑
前端项目中,我们经常会使用阿里开源的组件库:ant-design,其提供的组件已经足以满足多数的需求,拿来就能直接用,十分方便,当然了,有些公司会对组件库进行二次封装,改造成极具自家风格的产品。
在本系列的文章中,不谈高大上的东西,不深究底层源码,只分享一些项目中遇到的小问题。
表格(table)
——师傅以为是组件库的bug,没想到……
不知道正在阅读本文的读者有没有经历过:
- 在使用
<nz-table></nz-table>的时候,删除表格的最后一项时,展示“暂无数据”的图像,此后,再向表格中添加数据的时候,发现这个“暂无数据”的图像不消失了。 - 表格中展示了几条数据,但是批量删除了这些数据后(当然,也可以手动的一条一条删除),“暂无数据”的那张图并没有出现。
这个空状态怎么老和咱做对呢?就不能好好的满足我们的预期吗?别说,还真会,不过,偶然性极高。
- “暂无数据”图像在极少数的情况下会正常的显示(有多少呢?可能和再来一瓶的中奖率差不多吧)。
发生这种问题的原因实际上非常简单,回忆一下我们在删除和添加的表项时,是不是像下面这样做的:
<nz-table [nzData]=“itemList”>
<thead>
<tr *ngFor=“let item of itemListHead”>
<td>{{item.label}}</td>
</tr>
<tbody>
<tr *ngFor=“let item of itemList”>
<td>{{item.name}}</td>
<td>{{item.age}}</td>
</tr>
</tbody>
</nz-table>
public itemList: any[] = [];
public itemListHead = [
{ label: ‘name’ },
{ label: ‘age’ }
];
add(item: any) {
this.itemList.push(item);
}
delete(index) {
this.itemList.splice(index, 1);
}
看起来,这段代码并没有什么问题,但是要知道一个问题,push() 和 splice()这俩函数是直接在原始数组上进行操作的,会改变原数组,但是……想一想,他会改变数组的引用吗?不会。
而在angular的设计中,onChanges() 监听的是什么变化呢?是引用。
所以,只要想办法改变引用地址就可以解决上面的问题。
add(item: any) {
this.itemList.push(item);
this.itemList = [...this.itemList];
}
delete(index) {
this.itemList.splice(index, 1);
this.itemList = [...this.itemList];
}
这里提供的方法,简单,迅速,暴力,十分好用。
看完本文,是不是有种豁然开朗的感觉呢?
ng-zorro-antd中踩过的坑的更多相关文章
- 项目中踩过的坑之-sessionStorage
总想写点什么,却不知道从何写起,那就从项目中踩过的坑开始吧,希望能给可能碰到相同问题的小伙伴一点帮助. 项目情景: 有一个id,要求通过当前网页打开一个新页面(不是当前页面),并把id传给打开的新页面 ...
- 使用ffmpeg视频编码过程中踩的一个坑
今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果: ...
- git工作中常用命令-工作中踩过的坑
踩坑篇又来啦,这是我在工作中从git小白进化到现在工作中运用自如的过程中,踩过的坑,以及解决办法. 1.基于远程develop分支,建一个本地task分支,并切换到该task分支 git checko ...
- 转:Flutter开发中踩过的坑
记录一下入手Flutter后实际开发中踩过的一些坑,这些坑希望后来者踩的越少越好.本文章默认读者已经掌握Flutter初步开发基础. 坑1问题:在debug模式下,App启动第一个页面会很慢,甚至是黑 ...
- vue项目开发中踩过的坑
一.路由 这两天移动端的同事在研究vue,跟我说看着我的项目做的,子路由访问的时候是空白的,我第一反应是,不会模块没加载进来吧,还是....此处省略一千字... 废话不多说上代码 路由代码 { pat ...
- spring-data-redis 使用过程中踩过的坑
spring-data-redis简介 Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, ...
- 那些年,我们在Django web开发中踩过的坑(一)——神奇的‘/’与ajax+iframe上传
一.上传图片并在前端展示 为了避免前端整体刷新,我们采用ajax+iframe(兼容所有浏览器)上传,这样用户上传之后就可以立即看到图片: 上传前: 上传后: 前端部分html: <form s ...
- JasperReport 中踩过的坑
Mac Book Pro 10.13.6Jaspersoft Studio community version 6.6.9JDK 8 安装 Jaspersoft Studio Jasper Rep ...
- Python使用boto3操作AWS S3中踩过的坑
最近在AWS上开发部署应用. 看了这篇关于AWS中国区填坑的文章,结合自己使用AWS的经历,补充两个我自己填的坑. http://www.jianshu.com/p/0d0fd39a40c9?utm_ ...
随机推荐
- 不插字段,直接利用OracleSpatial计算
select to_char(regexp_replace(sdo_util.to_gmlgeometry(sdo_geom.sdo_difference( SDO_GEOMETRY ( 2003, ...
- QQ 第三方登录
- 2019-9-2-win10-uwp-应用转后台清理内存
title author date CreateTime categories win10 uwp 应用转后台清理内存 lindexi 2019-09-02 12:57:38 +0800 2018-2 ...
- HTML静态网页--JavaScript-Window.document对象
1.Window.document对象 一.找到元素: docunment.getElementById("id"):根据id找,最多找一个: var a =docunmen ...
- 2019-5-27-C#-很少人知道的科技
title author date CreateTime categories C# 很少人知道的科技 lindexi 2019-05-27 19:33:36 +0800 2018-03-16 08: ...
- Mac MAMP 使用终端shell操作mysql数据库
在MAMP中已经集成了phpMyAdmin,可以很方便的管理mysql数据库,但是有的情况是phpMyAdmin不能做到的.比如,导入sql文件,当sql文件非常大(大于20MB)的时候,apache ...
- 【转载】Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- Xshell如何修改字体大小和颜色
https://jingyan.baidu.com/article/db55b609aac41e4ba30a2f86.html 打开Xshell,点击菜单栏的“文件”->“属性”,或者也可以使用 ...
- HDU 1236
水题~~但我做了很久: 题意:是中国人都懂了 思路:结构体排序: 以后要多用用重定义的排序手段,!!!!!多用!!多用!!多用!! #include<iostream> #include& ...
- IntStack(存放int型值,带迭代器) 附模板化实现 p406
1 该栈只用于存在int型数据 #include "../require.h" #include <iostream> using namespace std; cla ...