首页 > 解决方案 > 切换标签时如何保持角度的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;

标签: angular

解决方案


错误消息基本上告诉你整个故事。

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 检索数据后调用它的构造函数。


推荐阅读