angular2保存从firebase到模型的响应

时间:2016-10-19 23:00:21

标签: javascript angular firebase firebase-realtime-database

非常感谢您阅读这个问题。一直苦苦挣扎,如果有人在这里指出我做错了,那将会很棒。

我从firebase获得结果并尝试将其保存在用户模型中,但我收到此错误

  

未捕获的TypeError:无法将属性'users'设置为null。

import { Component, OnInit, EventEmitter, Output } from '@angular/core';
import { User } from '../user.ts';
import { UserComponent } from './user.component';
declare var firebase: any;
@Component({
  moduleId: module.id,
  selector: 'trafford-user-list',
  templateUrl: 'user-list.component.html',
  styleUrls: ['user-list.component.css'],
  directives: [ UserComponent ]
})
export class UserListComponent implements OnInit {
  private users: User[] = [{ name: 'sosk', email: 'dfdok', password: 'asdf'}];
  private user: User;
  @Output() selected = new EventEmitter<User>();
  constructor() { }

  ngOnInit() {
    this.getUsers();
  }

  getUsers() {
    firebase.database().ref('accounts').on('value', function(snapshot) {
      this.users = snapshot.val();
    });
  }

  onSelected(user: User) {
    this.selected.emit(user);
  }

}

当我尝试在控制台中编写响应时,它正在工作。但是this.users在firebase回调中没有任何范围。我很有兴趣任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

使用箭头功能(=>)来保留范围

  getUsers() {
    firebase.database().ref('accounts').on('value', (snapshot) => {
      this.users = snapshot.val();
    });
  }