从Firebase检索数据时angular-2(beta)视图未更新?

从Firebase检索数据时angular-2(beta)视图未更新?,angular,firebase,Angular,Firebase,下面的代码显示我正在从Firebase检索数据,同时使用绑定语法更新视图。数据已成功检索,我已在控制台中打印,但我的视图更新非常缓慢。我已经在index.html中初始化了我的Firebase。谁能解释一下到底是什么问题,Firebase的初始化有什么问题吗 在控制台上获取此错误angular2 polyfills.js:493未捕获类型错误:fnRef.apply不是函数 提前交货 index.html 看法 酒店名称:{{singlehotel.displayName}} 如果在Angul

下面的代码显示我正在从Firebase检索数据,同时使用绑定语法更新视图。数据已成功检索,我已在控制台中打印,但我的视图更新非常缓慢。我已经在
index.html
中初始化了我的Firebase。谁能解释一下到底是什么问题,Firebase的初始化有什么问题吗

在控制台上获取此错误angular2 polyfills.js:493未捕获类型错误:fnRef.apply不是函数

提前交货

index.html
看法

酒店名称:{{singlehotel.displayName}}

如果在Angular外部初始化库,Angular将无法识别何时需要运行更改检测

作为一种解决方法,您可以使用
zone.run(…)

同样使用
函数()…
这个。
不指向当前类实例。改用
()=>…

另见


我建议您改用。

您希望的数据是否显示在页面上,或者您是否收到了代码指示的错误?是的,我希望数据显示在我的页面上。我没有收到任何错误,因为我提到我正在从数据库检索数据,但我的html并没有在数据从firebase到达后立即更新。你有什么想法吗?请帮我@TED简化你的生活并使用我正在使用angular-2的测试版,当npm angularfire2发现ngmodule时,我没有在我的应用程序中使用ngmodule。所以我忽略了尝试它。我对angular-2@Fabio Antunes非常陌生。ngzone需要导入吗?每个类型都需要导入到TS中。
import{ngzone}来自“@angular/core”
谢谢@gunter Zochbauer。。。我试着让它像预期的那样工作。我听说在Angular2之前还有另一个Angular2,但我对此一无所知
<script src="https://www.gstatic.com/firebasejs/3.5.1/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    storageBucket: "",
    messagingSenderId: ""
  };
  firebase.initializeApp(config);
</script>
   <body>
  <my-app>Loading...</my-app>
</body>
ngAfterContentInit() {

       this.singlehotel = {};
       firebase.database().ref('Rests/').once('value', function(snapshot) {
         console.log('value from db' + JSON.stringify(snapshot.val()));
         var getrest = snapshot.val();
         console.log(JSON.stringify(getrest));

           for (var key in getrest) {

                  if(restemail == getrest[key].email){

          console.log(key + ':' + JSON.stringify(getrest[key]));
                          this.singlehotel = getrest[key]; //getting error here when using this

         }         
            }
         });                
      }
<div class="container" style="background-color: #f2f2f2;">
    <h1><b>Hotel Name :{{singlehotel.displayName}}</b></h1>
</div>
constructor(private zone:NgZone) {}

ngAfterContentInit() {
   this.singlehotel = {};
   firebase.database().ref('Rests/').once('value', (snapshot) => {
     this.zone.run(() => {
       console.log('value from db' + JSON.stringify(snapshot.val()));
       var getrest = snapshot.val();
       console.log(JSON.stringify(getrest));

       for (var key in getrest) {
         if(restemail == getrest[key].email){
           console.log(key + ':' + JSON.stringify(getrest[key]));
           this.singlehotel = getrest[key]; //getting error here when using this
         }         
       }
     });
   });                
 }