添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
    <tbody>
                <ng-container *ngFor="let data of expandTable.data">
                    <ng-container *ngFor="let item of mapOfExpandedData[data.key]">
                        <tr *ngIf="(item.parent && item.parent.expand) || !item.parent">
                            <td class="fristTD">
                                <a (click)="edit(item.key)">编辑</a>
                                <span style="color: #ccc;">|</span>
                                <a nz-popconfirm nzPopconfirmTitle="确定将选择数据删除?" nzPopconfirmPlacement="bottom"
                                    (nzOnConfirm)="deleteRow(item.key)" (nzOnCancel)="cancel()"
                                    style="color: red;">删除</a>
                            <td [nzIndentSize]="item.level * 20" [nzShowExpand]="!!item.children.length"
                                [(nzExpand)]="item.expand"
                                (nzExpandChange)="collapse(mapOfExpandedData[data.key], item, $event)">
                                {{ item.JYZCFL_ZCFLMC }}
                            <td nzAlign="center" style="padding-top: 0; padding-bottom: 0;">
                                <img [src]="item.IMG" *ngIf="item.IMG" style="width: 30px;height: 30px;"
                                    (click)="showImg(item)" />
                            <td>{{ item.JYZCFL_KCYJSL }}</td>
                            <td>{{ item.JYZCFL_YXTS }}</td>
                            <td>{{ item.JYZCFL_BZ }}</td>
                            <td>{{ item.JYZCFL_WHR }}</td>
                            <td>{{ item.JYZCFL_WHSJ|date:'yyyy-MM-dd HH:mm:ss' }}</td>
                    </ng-container>
                </ng-container>
            </tbody>
 // 获取首页树状图
    async getMultiple() {
        try {
            this.loading = true;
            const res = await this.http.get('ZCFL/GetTreeList').toPromise()
            this.listOfMapData = res.data;
            this.listOfMapData.forEach(item => {
                this.mapOfExpandedData[item.key] = this.convertTreeToList(item);
            this.loading = false;
        } catch (error) { }
    collapse(array: any[], data: any, $event: boolean): void {
        if ($event === false) {
            if (data.children) {
                data.children.forEach(d => {
                    const target = array.find(a => a.key === d.key)!;
                    target.expand = false;
                    this.collapse(array, target, false);
            } else {
                return;
    convertTreeToList(root: any) {
        const stack: any[] = [];
        const array: any[] = [];
        const hashMap = {};
        stack.push({ ...root, level: 0, expand: false });
        while (stack.length !== 0) {
            const node = stack.pop()!;
            this.visitNode(node, hashMap, array);
            if (node.children) {
                for (let i = node.children.length - 1; i >= 0; i--) {
                    stack.push({ ...node.children[i], level: node.level! + 1, expand: false, parent: node });
        return array;
    visitNode(node: any, hashMap: { [key: string]: boolean }, array): void {
        if (!hashMap[node.key]) {
            hashMap[node.key] = true;
            if (node.WJID) {
                this.getImgViewSingle(node.WJID).then(img => {
                    node.IMG = img;
            array.push(node);

欢迎大家交流分享经验

// An highlighted block var foo = 'bar'; .ant-table-tbody>tr:hover:not(.ant-table-expanded-row)>td { background-color: rgba(24, 144, 255, 1) !imp... 日常开发中表单使用很常见,正巧刚使用完,此次对nz-table的表单页脚显示总数据条数和当前页进行配置小结; 具体基础用法可以参考官方文档 nz-table集成,如下是对页脚总页数和条数配置的拓展: 注:需要预先声明好当前页码和数据总条数的字段并从接口数据中赋值 首先,在获取到页码和数据总条数的基础上配置页脚模板 当前页码可以通过组件中的 [nzPageIndex]="pageIndex" 获取; 数据总条数可以通过数据源数组的 length 获取; <ng-template #... groupFakeData[0].data的长度,结合table的相关知识,我们得出结论:由于table会根据第一行的th元素生成对应数量的col,也就是说第一行的「表头分组」操作只生成了8个col,并不是生成32个col然后以4个为一组合并,并且每个col的宽度是tableWidth的宽度。上面我们提到,每个col的宽度会根据第一行th的宽度来生成,那么我们可以简化一下,只在第一行th写宽度就可以了。可以看到,跟我们理想的样子大相径庭,为什么会出现这样的效果? 做了一个业务线上的客户定制化报表需求,因为报表存在各种合并行,合并列,静态动态按需拼接数据等一系列操作,日常使用的 帆软报表平台,公司新推的 自定义报表平台在实现方面可能存在问题,由于年底事情多,人手也不够,各种任务时间排期还特别紧,经组内前端讨论,我们决定用比较稳妥靠谱的方式,手搓了几个定制化报表,由于之前没有做过这么多的自定义合并行列的表格,这次开发实现过程也是一个探索的过程。 前端项目中,我们经常会使用阿里开源的组件:ant-design,其提供的组件已经足以满足多数的需求,拿来就能直接用,十分方便,当然了,有些公司会对组件进行二次封装,改造成极具自家风格的产品。 在本系列的文章中,不谈高大上的东西,不深究底层源码,只分享一些项目中遇到的小问题。 表格(table) ——师傅以为是组件的bug,没想到…… 不知道正在阅读本文的读者有没有经历过: 在使用 ... 上一此在介绍如何获取cookie时候已经说过,在网页开发者功能里面可以对网页进行抓包分析,详见: Python 微博爬取实战(一)爬虫参数:如何获得cookie,实现爬虫登陆爬取 1.那么问题来了,什么是json数据呢? 先介绍一下历史: 过去传统网站开发,网站就像电脑里面的文件目录,用户通过浏览器直接访问服务器内文件。 就像我们电脑的某个盘,随着使用时间变久,文件越来越多,会发现文件越来越难以管理。出现文件寻找难度大,文件损坏,污染数据等问题。 所以我们构建数据作为服务器的数据管理内核. 1)为表格外的 div 容器添加 #tableContainer,用于在 ts 中获取div的长度。 2)nzScroll 配置表格的滚动属性,当 y 的值超过 tableHeight 时,表格内容自动开始滚动显示 <div class="table-container Fill" #tableContainer> <nz-table