【问题标题】:Json stringify a map contains map and objects AngularJson字符串化地图包含地图和对象Angular
【发布时间】:2020-02-27 15:36:20
【问题描述】:

对不起我的英语:)

我有一项服务,我需要将它储存起来,我制作了多个球童。但是我有一个问题,使用 stringify 将 mycaddies 放入字符串中。 :

export class CaddyService {

   currentCaddyName:string="Caddy1";
  public caddies:Map<string,Caddy> = new Map();

}

我需要把它储存起来,我做了多个球童:

localStorage.setItem('myCaddies',JSON.stringify(this.caddies));

并在我的构造函数中解析:

let caddies= localStorage.getItem('myCaddies');

但它不起作用,这个球童包含另一个地图和对象的问题:

export class **Caddy**{

    constructor (public name:string){

    }


    public items:Map<number,ProductItem> = new Map();
    public client:Client;
}

export class **ProductItem** {



    public product:Product;
    price:number;
    quantity:number;
}


export interface Product{
    id:number;
    name:string;
    description:string;
    currentPrice:number;
    promotion:boolean;
    selected:boolean;
    available:boolean;
    photoName:string;
    quantity:number;
    _links:{
      self:{
        href:string;
      },
      product:{
        href:string;
      },
      category:{
        href:string
      }
    }

  }


export class Client {
    name:string;
    emai:string;
    phoneNumber:string;
    address:string;
    username:string;
}

谢谢

【问题讨论】:

    标签: angular typescript stringify


    【解决方案1】:

    如果你想要一个简单的解决方案:

    • 使用对象而不是new Map(),因为它可以使用stringify
    caddies:{[key:string]:Caddy}
    

    Map里面的所有方法都可以用:Object.keys(),Object.values()...

    编辑:我还没有看到 Caddy 也是一个对象。在这种情况下,它不起作用。 所以另外两个解决方案:

    • 使用interface 而不是class,并为类中的方法使用服务。
    • 或在Caddy 类中创建一个方法来映射到一个对象。此外,还有一个将对象映射到类的构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 2021-08-13
      • 2023-03-27
      相关资源
      最近更新 更多