2017-07-28 49 views
1

我在做Ionic3項目。這是一個問題。 後端:我使用了Firebase的Rxjs,這對於實時數據來說非常簡單而且很好。 前端代碼在這裏:Ionic3,Angular 2,rxjs對象分配頁面變量

我希望我的數據保持一致。所以我提供了一個服務,將數據和分配給每個頁面變量。

[.TS文件]

public dogModel = new dogModel(); 
constructor(
,public testService: TestService) { 
this.dogModel = this.testService.dogModel; 
} 

[HTML文件]

<div>{{dogModel.state}}</div> 

和它的作品真的很好。當數據在服務中更改時,我不知道服務數據如何重新分配給頁面變量。 和一多, 如果我改變了這樣的代碼,

this.dogModel.state = this.testService.dogModel.state; 

我可以看到日誌改變業務數據,但無法看到頁面的任何變化。 有人知道嗎?我service.ts的

部分

constructor(
     public db: AngularFireDatabase 
) { 
    db.object(this.firebaseURL + '/dogState/test1234') 
     .subscribe((dogState) => { 
     Object.assign(this.dogModel, <dogModel>dogState); 

     console.log(this.dogModel); 
     }); 
+0

只要組件的構造函數運行,數據就可能沒有返回。您可以使用主題訂閱服務中數據的更改。 – 0mpurdy

+0

@ 0mpurdy - 是的,我做到了。 [Service.ts] db.object(this.firebaseURL +'/ mmumesState/test1234') .subscribe((mmumesState)=> {assign Data to object}); 但我希望我的代碼清潔,所以我只在Service中訂閱了一次。 我應該在每一頁打電話訂閱功能,我將使用數據? –

+0

這在您發佈的代碼中沒有顯示?你能包括它嗎? – 0mpurdy

回答

0

我會想象的變化被送入因爲被聽取事件觸發回UI。我假設您正在討論更新Firebase控制檯中的數據,並且您的應用會立即在Ionic應用的屏幕上顯示更改。訂閱的美麗!可能使用ReactiveFormsModule的權利?