Angular:更改后获取新数据

时间:2018-01-18 14:19:08

标签: angular rest

我有一个服务,它通过两种方法向我的API发送HTTP请求:一个获取数据,另一个在点击事件后更新对象。

我的初始数据是在ngOnInit()

上调用时存储的
ngOnInit() {
    this.data = this.myservice.getData();
}

单击按钮时会调用方法:

update(id) {
    this.myservice.update(id);    
}

这很好用,但是当我点击更新方法时,我需要刷新页面以查看具有新更新值的数据。 我对Angular很新,我想知道如何解决这个问题。我尝试在更新调用后在更新函数中重新获取数据,但它没有帮助。

2 个答案:

答案 0 :(得分:0)

如果发生任何更改,您可以使用包裹的observable主题并订阅任何主题。如果发生任何变化,回调函数将重新获取数据以更新列表。

在您的服务中

dataChangesSubject = new Subject<any>();

然后修改函数(我假设你的服务中声明了数据)

在您的服务更新功能中添加

      this.dataChangesSubject.next(this.data);
您组件中的

ngOnInit() {
  this.myservice.dataChangesSubject.
    subscribe((data) => this.data = data;
    )
  this.data = this.myservice.getData();
}

<小时/> 或者,您可以让observable返回没有数据,并执行您更新列表所做的任何代码。 因此,在您的服务中,仍然声明主题

dataChangesSubject = new Subject<void>();

在您的服务更新功能中,只需通知更改。

this.dataChangesSubject.next();

然后在您的组件中,添加您执行的任何代码以获取下一个

的回调函数中的最新数据
ngOnInit() {
  this.myservice.dataChangesSubject.
    subscribe(() => {
      //code goes here 
      this.data = this.myservice.getData();
      }
    )
  this.data = this.myservice.getData();
}

答案 1 :(得分:0)

您需要使用新的更新ID更新“数据”变量。调用更新方法后,只需执行this.data = this.myservice.getData();。这就是为什么你重新加载页面时看到它很好的原因。你在ngOnInit上调用它