2017-06-09 68 views
0

我有一個服務,使一些http調用休息api。在我的組件上,我訂閱了它。我如何更新訂閱的數據而無需重新撥打服務電話?如何更新我的訂閱數據?

+1

你想更新什麼值?通常在訂閱內您將分配您的訂閱數據到本地組件變量。你可以直接更新你的本地價值。張貼一些代碼? – CharanRoot

回答

1

這個問題不是很清楚,但我想我可以推斷出足以提供一個答案。

讓我們假設你有一個可觀察到的在其上有一個OrganizationId屬性User對象,並希望可觀察到的與OrganizationId相關的Organization對象。你希望它在用戶更新時更新,對嗎?

這就是你想要使用flatMap運營商。假設我們的organizationService有一個byId$方法,它接受OrganizationId並從http.post()方法返回可觀察值。

organization$ = user$ 
    .flatMap(user => organizationService.byId$(user.OrganizationId)); 

你能想到的flatMap類似於map中,這將需要一個值,並把它變成另一個根據您傳遞給它的回調。不同之處在於,如果以這種方式使用正常的map,則最終會得到可觀察值的可觀察值。 flatMap將展開返回的observable,以便您可以觀察所需的對象。