运用localStorage存储获取操作记录(ng-zorro)

本文介绍如何在Angular项目中使用ng-zorro的Tree组件,并结合localStorage实现用户选择隐藏表格列的记录,确保关闭浏览器后仍能记住用户的设置。详细讲述了引用ng-zorro控件和实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能描述

功能描述:表格列过长,通过用户选择隐藏部分列有利于更直观查看需要看到的表格信息。关闭浏览器,下次打开希望记忆已选项。
列过多,某些数据无需检查
可选显示列表
勾选,隐藏不必要检查项
在这里插入图片描述


一、引用控件

引用ng-zorro 控件:Tree树形控件
官方文档: link.

二、实现步骤

代码如下:

  • HTML:
<nz-card>
  <nz-tabset nzLinkRouter [nzTabBarExtraContent]="extraTemplate">
  ......
    </nz-tabset>
</nz-card>

<!-- 多选框 -->
<ng-template #extraTemplate>
  <i
    nz-dropdown
    nz-icon
    nzType="ellipsis"
    nz-popover
    [nzPopoverContent]="contentTemplate"
    nzPopoverPlacement="bottomRight"
  ></i>
  <ng-template #contentTemplate>
    <nz-tree
      [nzData]="nodes"
      nzCheckable
      nzMultiple
      [nzCheckedKeys]="defaultCheckedKeys"
      [nzExpandedKeys]="defaultExpandedKeys"
      [nzSelectedKeys]="defaultSelectedKeys"
      (nzCheckBoxChange)="nzEvent($event)"
      [nzBlockNode]="true"
    ></nz-tree>
  </ng-template>
</ng-template>
  • TS:
 // 设置多选框初始值 localStorage 若未储存则默认全选(isChecked: true,)
  nodes =
    JSON.parse(localStorage.getItem('form-sign')) !== null
      ? JSON.parse(localStorage.getItem('form-sign'))
      : [
          {
            title: '序号',
            key: '0-1',
            isLeaf: true,
            isChecked: true,
          },
    
        	......
          
          {
            title: 'item8',
            key: '0-9',
            isLeaf: true,
            isChecked: true,
          },
        ];
// 多选框选择时响应
  nzEvent(e: NzFormatEmitEvent): void {
    // 寻找key ->遍历旧数组,若旧数组key = 被点击多选框key -> 获取isChecked -> 更改 isChecked
    const key = e.node.key;
    const isChecked = e.node.isChecked;
    this.nodes.forEach((el, index) => {
      this.nodes.splice(index, 1, {
        title: el.title,
        key: el.key,
        isLeaf: true,
        isChecked: el.key === key ? isChecked : el.isChecked,
      });
    });
    // 储存到本地
    localStorage.setItem('form-sign', JSON.stringify(this.nodes));
  }
  getStorage(): void {
    if (localStorage.getItem('form-sign') !== null) {
      // 选中效果 -> 遍历如果为true -> get key -> 存到数组
      JSON.parse(localStorage.getItem('form-sign'))
        .filter(item => item.isChecked === true)
        .forEach(el => this.defaultCheckedKeys.push(el.key));
    } else {
      this.defaultCheckedKeys = ['0-1', '0-2', '0-3', '0-4', '0-5', '0-6', '0-7', '0-8', '0-9'];
    }
  }

总结

此为个人学习Angular过程中的练习,若有不合理的地方,欢迎指正,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值