【问题标题】:HttpInterceptor not working with angularfire2/Firestore API calls. Any workaround?HttpInterceptor 不适用于 angularfire2/Firestore API 调用。任何解决方法?
【发布时间】:2019-09-09 06:07:22
【问题描述】:

版本信息

角度:7 / 火力基地:5.7.3 / 角火:5.1.1

我尝试在 angularfire2/Firestore API 调用(请求 URL:https://firestore.googleapis.com/google.firestore.v1.Firestore/Listen/channel?database=projects....)上实现 HttpInterceptor,但没有成功。

由于未使用@angular/common/http/HttpClient,因此请求未通过拦截器。

是否有任何解决方法可以在这些 API 调用中集成 Angular 拦截器功能?

谢谢

【问题讨论】:

标签: angular google-cloud-firestore angularfire2


【解决方案1】:

据我所知,AngularFire 是 Firebase SDK 的 Angular 友好包装器。

Firebase SDK 不使用 Angular Http 客户端,因此无法拦截来自 SDK 的 API 调用。

您希望在什么用例中拦截 Firebase API 调用?

编辑:

这是一个伪代码示例,我如何实现一个简单的加载微调器。

在启动 Firestore 操作的事件中,您可以将 isLoading 设置为 true,并且在收到 Firestore 的响应后,您可以将 isLoading 设置为 fasle。

在您的模板中,您可以使用*ngIf 显示加载微调器。

组件.ts

this.isLoading = false;

onEvent() {
    this.isLoading = true;
    this.angularFirestore.collection('test').doc('testId').set(data)
        .subscribe(
            success => {
                this.isLoading = false;
            }
            error => {
                console.log(error);
                this.isLoading = false;
            }
        );
}

component.html

<div *ngIf="isLoading">
    <loading-spinner>
</div>

【讨论】:

  • 用例:添加微调器加载器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
  • 2018-08-20
  • 2018-03-19
  • 1970-01-01
  • 2018-05-27
相关资源
最近更新 更多