非常感谢您阅读这个问题。一直苦苦挣扎,如果有人在这里指出我做错了,那将会很棒。
我从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回调中没有任何范围。我很有兴趣任何帮助都会受到赞赏。
答案 0 :(得分:2)
使用箭头功能(=>
)来保留范围
getUsers() {
firebase.database().ref('accounts').on('value', (snapshot) => {
this.users = snapshot.val();
});
}