angular - 使用此功能时无法在 angular-2 中设置 null 属性?

标签 angular firebase firebase-realtime-database

您好,我遇到了一个错误

angular2-polyfills.js:143 Uncaught TypeError: Cannot set property 'singlehotel' of null(…)

还有来自 Firebase 的警告

FIREBASE WARNING: Exception was thrown by user callback. TypeError: Cannot set property 'singlehotel' of null

当我尝试从 Firebase 获取数据时出现此错误,请任何人帮助解决此问题。

提前致谢!

这是我的代码

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

         }         
            }
         });                
      };

index.html

<script src="https://www.gstatic.com/firebasejs/3.5.1/firebase.js"></script>
    <script>
      // Initialize Firebase
      // for security reasons i am hiding my keys 
      var config = {
        apiKey: "***",
        authDomain: "***",
        databaseURL: "***",
        storageBucket: "**",
        messagingSenderId: "**"
      };
      firebase.initializeApp(config);
    </script>
       <body>
      <my-app>Loading...</my-app>
    </body>

查看

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

两者都属于同一个组件。当加载 View 时,每次都会调用 ngAfterContentInit() 函数,这就是函数触发的方式,但我无法存储在范围内,我的意思是这个。请帮助我

最佳答案

如果您使用 function() {... }

this 不会指向当前类实例。改用箭头函数

firebase.database().ref('Rests/').once('value', (snapshot) => {

另见 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

关于angular - 使用此功能时无法在 angular-2 中设置 null 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40377018/

相关文章:

javascript - Angular:如何从 elementRef 判断元素是否已给定类应用于它?

java - 如果不存在则插入整数,如果 Firebase 实时数据库 Android 中已存在则递增

android - 错误重复条目 : com/google/android/gms/common/api/zze. 类

node.js - 在Flutter App中检查Firebase Auth中是否已存在电子邮件

ios - 根据用户名显示 Firebase 数据

javascript - Firebase 检查节点是否存在返回 true 或 false

angular - 如何使用 msbuild 从 dotnetcore web-api 项目中触发 "ng build",但将 Angular 项目保存在单独的文件夹中?

javascript - 使用 moment.js 生成进入第二天的 30 分钟时间段

Angular *ngIf 检查映射中是否存在键

android - FirebaseListAdapter - 查询