“[ts]找不到名字'Item'。”

时间:2017-11-06 19:17:07

标签: angular firebase angularfire2 google-cloud-firestore

我按照here的说明试用Firebase Firestore:

在app.component.ts文件的以下代码块中,出现以下错误:

  

[ts]找不到名称'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);
  }
}

我的问题是,他们在文档中使用的 Item 类型是什么?我应该在某处手动声明这种类型吗?或者我错过了其他什么?

2 个答案:

答案 0 :(得分:2)

Item是您希望返回的文档类型。例如,假设我正在尝试从firestore获取任务文档。

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

此处,Task是应返回的类型。您必须手动定义它。

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

所以在这个例子中,firestore应该返回一个像

这样的对象
{
    title: 'Task 1',
    description: 'My first task'
}

由于某些原因,这些文件没有定义项目。它很可能是从某个地方导入的。为简洁起见,他们可能没有将其包含在进口中。

答案 1 :(得分:0)

您找到答案了吗?我遇到了同样的问题,对我来说,作为一个初学者来理解它有点棘手,但最终还是有效。

“ Item”确实是您必须定义的接口。我在同一个.ts文件中定义了它(但我想我可以通过引用它在其他文件中正确地做到这一点...

在import和@Component之间:

AKTIVAN = 1

,然后在导出类AppComponent块中

Proizvod

它对我有用,我可以通过这种方式从firestore中获取数据