分享
三行代码  ›  专栏  ›  技术社区  ›  Smokey Dawson

存储一个可以在任何时候通过app angular 5更新的对象

  •  1
  • Smokey Dawson  · 技术社区  · 1 年前

    我似乎找不出最好的解决方案,比如说我有一个api调用,它可以让我得到一个事实对象,比如……

    facts: {
        name: 'james',
        age: 23,
        address: '123 fake st'
    }
    

    我希望能够在我的应用程序中使用它,但是我也希望能够更新单个属性,就像如果我按下一个按钮,我希望能够更新该对象的名称

    所以我可以做这样的事

    storeFact() {
       this.service.facts.name = 'nick'
    }
    

    然后对象将在服务中更新,如下所示。

    facts: {
       name: 'nick',
       age: 23,
       address: '123 fake st'
    }
    

    然后很明显我可以在我的应用程序中再次调用它 {{facts.name}} 那会回来的 nick

    但不仅如此,我还希望能够添加新的键和值,这样我就可以有一个按钮来完成这个任务。

    newFact() {
       this.service.facts.hobbies = 'swimming';
    }
    

    如果我调用api并将返回的结果(facts对象)存储在共享服务中,我就不能完全确定这是如何工作的,我可以添加、获取和更改键值对吗??

    如果我用经典的 BehaviorSubject observable 上的路线 .next() 我进去的时候不会弄坏现在的东西吗? this.service.facts.name = 'nick'

    任何帮助都将不胜感激

    谢谢

    1 回复  |  直到 1 年前
        1
  •  1
  •   Lucas Hendren    1 年前

    这不是最优雅的解决方案,这是为早期版本的角度,但应该仍然有效。您可以使用本地存储来存储变量并在应用程序中访问它。对你来说

        this.facts = JSON.parse(localStorage.getItem('facts'));
        this.facts.hobbies = 'swimming';
        localStorage.setItem('facts', JSON.stringify(this.facts));