错误:将圆形结构转换为JSON

时间:2018-08-25 15:34:55

标签: json stringify

我的应用程序有问题。有人可以帮助我吗?

错误: 将循环结构转换为JSON

“我的服务”用于创建项目并保存在本地存储中:

  addItem(item: Item): void {
    this.itens.unshift(item);
    let itens;
    if (localStorage.getItem('itens') == null){
      itens = [];
      itens.unshift(itens);
      localStorage.setItem('itens', JSON.stringify(itens));
    } else {
      JSON.parse(localStorage.getItem('itens'));
      itens.unshift(itens);
      localStorage.setItem('itens', JSON.stringify(itens));
    }
  }

还有我的component.ts

  addItem(): void  {
    this.itemAdicionado.emit({
      nome: this.nome,
      unidade: this.unidade,
      quantidade: this.quantidade,
      preco: this.preco,
      perecivel: true,
      validade: this.validade,
      fabricacao: this.fabricacao,
    });

    this.nome = '';
    this.unidade ;
    this.quantidade ;
    this.preco;
    this.validade;
    this.fabricacao;

    console.log(this.nome, this.unidade, this.quantidade, this.preco, this.validade, this.fabricacao);
  }

2 个答案:

答案 0 :(得分:0)

这不是Angular错误。这是<div class="container left-box"> <h1 class="left-box-title">Ajouter un article</h1> <%= simple_form_for @post, wrapper: :vertical_form do |f| %> <%= f.error_notification %> <%= f.input :title, label: 'Titre' %> <p>Contenu</p> <%= f.text_area :content, class: 'col-md-12 form-control content_post_create' %> <%= f.input :author, label: 'Auteur' %> <%= f.button :submit, class: "btn-primary", label: 'Mettre en ligne' %> <%= f.button :button, "Recommencer", type: "reset", class: "btn-outline-secondary" %> <% end %> <%= link_to "Retour à l'accueil", posts_path %> </div> 函数引发的JavaScript运行时错误。该错误告诉您JSON.stringify包含循环对象引用。在运行应用程序时可以这样做,但是在将其字符串化时会出现问题:生成的JSON会变得无限长。

正如Kevin Koelzer在回答中指出的那样。问题是您写了itens。基本上,这会将项目数组添加到项目数组中,从而创建一个循环引用。因此,写itens.unshift(itens);可以解决您的问题,而且可能还是您打算要做的。

答案 1 :(得分:-1)

itens.unshift(itens);

这可能是

itens.unshift(iten);