【问题标题】:Cannot get firebaseRef to work with angular2 "Cannot find name 'firebase'."无法让 firebaseRef 与 angular2 “找不到名称‘firebase’一起使用。”
【发布时间】:2016-12-06 23:24:56
【问题描述】:

我们正在尝试让这个示例在我们的 Angular 2 应用程序中运行,来自 angularFire2 api 文档:angularfire2.com/api

import {Inject} from 'angular2/core';
import {FirebaseRef} from 'angularfire2';

class MyComponent {
constructor(@Inject(FirebaseRef) ref:Firebase) {
ref.on('value', this.doSomething);
  }
}

但我们不断收到构建错误“找不到名称 Firebase”

我们需要在哪里定义 Firebase?它已经在 typings.json 中定义:

"ambientDependencies": {
"firebase": "github:DefinitelyTyped/DefinitelyTyped/firebase/firebase.d.ts#64b25f63f0ec821040a5d3e049a976865062ed9d",
"es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654"

},

任何见解将不胜感激。

【问题讨论】:

  • 您使用的是旧版本的“环境”。查看新的 Angular CLI 以获取最新更新

标签: typescript angular firebase angularfire


【解决方案1】:

这取自an answer to this github issue,当我无法获得与您尝试工作相同的代码时,它对我有用。


使用 Angularfire2,您不需要编写任何 .on() 或 .off()。 你可以通过指向一个参考来完成同样的事情,然后 订阅它,像这样:

let subscription = this.af.database.object('someLocation').subscribe(data=> {
//do something with your data
})

本质上是一样的:

firebase.database().ref('someLocation').on('value', snapshot=>{
//do something with your data
})

【讨论】:

  • 订阅,持续关注更新。 firebase.once() 是否有 angularfire2 等效项,它只检索一次数据?
  • 居然想通了,得用this.af.database.object('someLocation').take(1).subscribe(...)
  • 但是如果我想使用:ref.on('child_added') 呢?
  • 我同样问自己,我们应该为此使用原始 Firebase 吗?
猜你喜欢
  • 1970-01-01
  • 2017-01-03
  • 2017-03-05
  • 2020-06-30
  • 2017-01-29
  • 1970-01-01
  • 2020-11-26
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多