0

内部ルーティング、私が使用している(nativescript-角/ルーター)および(nativescript-プラグインfirebase)nativescript(角) - 私はそのようなコードを書くとき((角)nativescriptでfirebaseイベントリスナー

動作していない結合注文ページのVAR):

firebase.addValueEventListener(result => { 
    this.router.navigate(['/order'], { clearHistory:true }); 
}, path); 

and this is the simulator image of the order page when the code is inside the listener

が、ルーティングコードは、イベントリスナーの外にそれは

を動作します

and this when the code is outside... the var value shows in the template perfectly fine

このは、テンプレートコードorder.html

<Label [text]="test"></Label> 

であり、これは、ナビゲーションラップorder.component.ts

export class OrderComponent { 
    public test = "test var value"; 
} 

答えて

0

です内部角度のあるゾーニングコールバック。

import { Component, NgZone } from "@angular/core"; 

... 

constructor(private zone: NgZone) { 
} 

firebase.addValueEventListener(result => { 
    this.zone.run(() => { 
     this.router.navigate(['/order'], { clearHistory:true }); 
    ]) 
}, path) 
+1

ゾーンの修正は正しいですが、約束はイベントリスナーを使用する正しい方法ではありませんが、ゾーンコードをイベントリスナー関数の中に入れて機能させました。ありがとう。 –

+0

フォローアップありがとうございます。私は私の答えを修正して、実際の解決策のみを含むようにしています。 NativeScriptアプリケーションイベントとFirebaseイベントリスナーは、バインディングが期待どおりに機能するように、角度付きゾーンコールバックでラップする必要があります。 –

関連する問題