我正在使用" firebase-angular2"构建非常简单的Angular2,它与Firebase对话。 npm模块。我设法让它毫无问题地发布到Firebase。
问题:
代码:
1 var itemsarr = [];
2 @Component({
template:`
<li *ngFor="#item of items">
{{item.title}}
</li>
`
})
3 export class AppComponent {
4
5 items:Array<string>;
6
7 constructor() {
8
9
10 myFirebaseRef.on('child_added', function(childSnapshot, prevChildKey) {
11 childSnapshot.forEach(function(records) {
12 this.items = itemsarr.push(records.val());
13 });
14 console.log(itemsarr)
15 });
16 console.log(itemsarr)
17 }
18 }
19 }
解决方案(感谢Thierry)
我需要设置&#34; = []&#34;首先是项目,然后转换为箭头功能,然后所有工作没有问题。我不知道箭头功能,这是以这种方式连接的。
1
2 @Component({
template:`
<li *ngFor="#item of items">
{{item.title}}
</li>
`
})
3 export class AppComponent {
4
5 items:Array<string>=[];
6
7 constructor() {
8
9
10 myFirebaseRef.on('child_added', (childSnapshot, prevChildKey) => {
11 childSnapshot.forEach((records) => {
12 this.items.push(records.val());
13 });
14
15 });
16
17 }
18 }
19 }
答案 0 :(得分:1)
您应该使用箭头功能来使用与组件本身对应的this
关键字。
export class AppComponent {
items:Array<string>;
constructor() {
myFirebaseRef.on('child_added', (childSnapshot, prevChildKey) => {
childSnapshot.forEach((records) => {
this.items = itemsarr.push(records.val());
});
console.log(itemsarr)
});
console.log(itemsarr);
}
}
有关箭头函数词汇的更多提示,请参阅此链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions。
希望它可以帮到你, 亨利
答案 1 :(得分:0)
使用
childSnapshot, prevChildKey = { ... }
records => { ... }
而不是
function(childSnapshot, prevChildKey) { ... }
function(records) { ... }