AngularFire2 类型:“'FirebaseObjectObservable<any>' 类型上不存在属性 'take'”
Posted
技术标签:
【中文标题】AngularFire2 类型:“\'FirebaseObjectObservable<any>\' 类型上不存在属性 \'take\'”【英文标题】:AngularFire2 typings: "Property 'take' does not exist on type 'FirebaseObjectObservable<any>'"AngularFire2 类型:“'FirebaseObjectObservable<any>' 类型上不存在属性 'take'” 【发布时间】:2017-02-10 00:40:17 【问题描述】:我已将我的 ionic 应用程序从 beta 11 更新到 rc0。所以这意味着我已经从 typescript 1.8 切换到了 2。
我已经根据这个站点配置了 AngularFire2 Getting Started with Ionic 2 RC0, Firebase 3 + AngularFire 2
我有这行代码工作:
this.af.database.object(`comments/$commentId`).take(1).subscribe(
data => console.log(data)
);
但是现在出现这个错误
错误 TS2339:类型上不存在属性“take” 'FirebaseObjectObservable'。
对正在发生的事情有任何想法吗?我该如何解决这个问题?
【问题讨论】:
您是否正在使用:import 'rxjs/add/operator/take';
导入 rxjs take 运算符
谢谢!它解决了这个问题:)
您可以发布答案,我会接受它作为解决方案。
我导入了操作符,但仍然收到错误消息:(
【参考方案1】:
如果您的 Angular 版本为 6 及以上。
在下面使用:
从“rxjs/operators”导入 take, map ;
安装 - npm install --save rxjs-compat
还可以将管道与其他功能(Take、Map)一起使用。
timer(0, 10) .pipe(take(1000)) .pipe(map(() => x));
【讨论】:
【参考方案2】:this.auth.authState.pipe(take(1)).subscribe(user=>
);
【讨论】:
【参考方案3】:对于 rxjs (v6) 和 angularfire (v5) 的更新版本,我使用的语法是:
import take from 'rxjs/operators'
...
this.afAuth.authState.pipe(take(1)).subscribe(user =>
...
)
【讨论】:
【参考方案4】:从上面发布用户@codedesignr的答案,以便这个问题可以有一个官方的解决方案:
使用
import 'rxjs/add/operator/take';
导入 rxjs take 运算符
【讨论】:
以上是关于AngularFire2 类型:“'FirebaseObjectObservable<any>' 类型上不存在属性 'take'”的主要内容,如果未能解决你的问题,请参考以下文章
TypeScript 错误找不到模块 'angularfire2/interfaces' ionic 3 angularfire2-offline
angularfire2:未启用 Cloud Firestore API
从“angularfire2/database”导入 AngularFireDatabase, FirebaseListObservable ;