我有一个服务,它通过两种方法向我的API发送HTTP请求:一个获取数据,另一个在点击事件后更新对象。
我的初始数据是在ngOnInit()
:
ngOnInit() {
this.data = this.myservice.getData();
}
单击按钮时会调用方法:
update(id) {
this.myservice.update(id);
}
这很好用,但是当我点击更新方法时,我需要刷新页面以查看具有新更新值的数据。 我对Angular很新,我想知道如何解决这个问题。我尝试在更新调用后在更新函数中重新获取数据,但它没有帮助。
答案 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上调用它