angular - 切换标签时如何保持角度的matsortdirection?
问题描述
我曾尝试将 matSortDirection 存储在本地存储中,但在检索它时会出现错误,因为“字符串”不可分配给“SortDirection”类型:
public sortData(sort: Sort)
{
localStorage.setItem('xyz', sort.active)
localStorage.setItem('abc', sort.direction)
}
let PGDirection:string= String(localStorage.getItem('abc'))
this.dataSource = new MatTableDataSource(sourceName);
this.dataSourceLength = sourceName.length;
this.sort.active = PGActive;
this.sort.direction=PGDirection;
解决方案
错误消息基本上告诉你整个故事。
sort.direction
似乎具有 SortDirection 类型。LocalStorage 只能存储字符串。
当您使用localStorage.setItem('abc', sort.direction)
它时,它会尝试转换sort.direction
为字符串。您应该手动执行此操作:JSON.stringify(sort.direction)
.
现在,当您从 localStorage 中检索此内容时,您需要将其转回为 SortDirection 对象。类似的东西JSON.parse(localStorage.getItem('abc'))
。
所以你的代码应该是这样的:
public sortData(sort: Sort) {
localStorage.setItem('xyz', JSON.stringify(sort.active))
localStorage.setItem('abc', JSON.stringify(sort.direction))
}
let PGDirection: SortDirection = JSON.parse(localStorage.getItem('abc'))
this.dataSource = new MatTableDataSource(sourceName);
this.dataSourceLength = sourceName.length;
this.sort.active = PGActive;
this.sort.direction=PGDirection;
不确定 SortDirection 是接口还是类。如果它是一个类,您可能需要在从 localStorage 检索数据后调用它的构造函数。
推荐阅读
- excel - 删除空行宏时类型不匹配
- hadoop-yarn - EMR 上的 Flink 作业仅在一个 TaskManager 上运行
- c++ - 带有 const 指针的 std::allocator_traits::construct
- r - 包“Rstem”不可用(适用于 R 版本 3.5.1)
- java - 有没有办法从 selenium 以提升/管理模式启动任何浏览器?
- sql - 如何在不锁定表的情况下向 Postgres 中的 ENUM 添加新值?
- perl - perl 格式化数组打印出来
- sql - 通过多列和条件分组
- excel - 我将如何为允许用户选择可以添加或删除哪些行和/或列信息的用户窗体编写代码
- mysql - 将 nvarchar(max) (MSSQL) 迁移到文本 (MySQL) 时出现问题