我正在構建非常簡單的Angular2,通過使用「firebase-angular2」npm模塊與Firebase進行對話。我設法將其發佈到Firebase,沒有任何問題。Angular2 firebase檢索並分配變量
問題:
- 我不能讓「項目」從「itemsarr」得值,我得到錯誤:遺漏的類型錯誤:無法設置屬性「項」的定義。我嘗試直接設置:this.items.push(records.val());,但我得到相同的錯誤。
- 在第14行我看到數組中的所有項目,但每次更新時都會在控制檯數組中列出,所以如果我有50個項目,它將在控制檯中列出50次。我知道我應該把它移到外面,但看問題3.
- 在第16行,我沒有看到itemsarr中的任何東西,它是空的?!
代碼:
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 }
SOLUTION(感謝亨利)
我需要設置 「= []」 的項目,然後再變換到箭頭函數,然後所有沒有問題的工作。不知道箭頭功能,這是以這種方式連接。
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 }