2017-11-06 16 views
2
私はFirebase Firestoreを試してみる hereからの指示に従ってい

"[ts]名前 'Item'を見つけることができません。"

app.component.tsファイルに次のコードブロックでは、私は次のエラーを取得する:

[ts] Cannot find name 'Item'.

import { Component } from '@angular/core'; 
import { AngularFirestore, AngularFirestoreDocument } from 'angularfire2/firestore'; 
import { Observable } from 'rxjs/Observable'; 

@Component({ 
    selector: 'app-root', 
    template: ` 
    <div> 
     {{ (item | async)?.name }} 
    </div> 
    ` 
}) 
export class AppComponent { 
    private itemDoc: AngularFirestoreDocument<Item>; 
    item: Observable<Item>; 
    constructor(private afs: AngularFirestore) { 
    this.itemDoc = afs.doc<Item>('items/1'); 
    this.item = this.itemDoc.valueChanges(); 
    } 
    update(item: Item) { 
    this.itemDoc.update(item); 
    } 
} 

私の質問は、の項目の種類は何ですか?私はこのタイプを手動でどこかで宣言すべきですか?あるいは私は何か他のものを逃していますか

答えて

1

Itemは返されると予想されるドキュメントの種類です。たとえば、Firestoreからタスク文書を取得しようとしているとします。

afs.doc<Task>('tasks/1'); 

ここでは、Taskが返されるタイプです。これを手動で定義する必要があります。

interface Task { 
    title: string; 
    description: string; 
} 

は、したがって、この例では、firestoreが何らかの理由で

{ 
    title: 'Task 1', 
    description: 'My first task' 
} 

のようなものであるオブジェクトを返すべきである、それらの文書アイテムが定義されていません。それはどこかから輸入されている可能性が最も高いです。彼らは簡潔にするために輸入にそれを含めていないかもしれません。

+0

インターフェイスではなくクラスを使用できますか?私はそれを試みましたが、クラスコンストラクタは決して呼び出されません。 – MiroO

+0

@MiroO変数を変数に割り当てることができます。 'myprop:MyClass'。コンストラクタを呼び出すには、クラス 'myProp:MyClass = new MyClass()'を初期化する必要があります。 – LLai

関連する問題