我有一個後端,可以從中獲取'Mission'對象。我有一個名爲MissionService的類。在Angular(2/4 +)中存儲和提供XHR'd數據給多個組件
的angular.io英雄教程暗示MissionService應該有一個getMissions方法:
getMissions(): Promise<Mission[]> {
return this.http.get(this.missionsUrl)
.toPromise()
.then(function(response) {
return response.json() as Mission[]
})
.catch(this.handleError);
}
我有一個要訪問我的任務的多個組件。該angular.io教程似乎表明我應該在它們的構造導入MissionService,並做到:
export class MissionsComponent implements OnInit {
missions: Mission[];
constructor(
private missionService: MissionService
){}
getMissions(): void {
this.missionService.getMissions()
.then(missions => {
this.missions = missions;
this.doSomething();
});
}
ngOnInit(): void {
this.getMissions();
}
}
我現在面臨的問題是,這意味着,我想用我的任務中的每個組件,兩端它有自己的this.missions實例,這與其他組件的this.missions可能不同。這也意味着我需要等待每次我想訪問組件中的任務時完成異步調用。這也意味着我需要在每個組件中調用getMissions()。
那麼,是不是建議的方法是一個很糟糕的?
擁有一個單一的全球this.missions字段不是更好嗎?這樣,我可以在需要時以編程方式更新我的任務(例如用戶單擊刷新按鈕)。
我應該怎麼做呢?