【问题标题】: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 运算符
  • 谢谢!它解决了这个问题:)
  • 您可以发布答案,我会接受它作为解决方案。
  • 我导入了操作符,但仍然收到错误消息:(

标签: angular typescript firebase ionic2 angularfire2


【解决方案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 运算符

        【讨论】:

          猜你喜欢
          • 2017-05-23
          • 2021-02-08
          • 1970-01-01
          • 2019-09-20
          • 2018-09-09
          • 2019-12-31
          • 2018-12-27
          • 2021-05-15
          • 2021-11-29
          相关资源
          最近更新 更多