相关疑难解决方法(0)

如何在使用angularfire2时访问本机Firebase对象?

我正在使用AngularFire2(2.0.0-beta.2)与angular2(2.0.0-rc.4)组合.我想从Angularfire2访问本机firebase对象(不是AngularFire根对象).

在我的组件中,我想进行如下调用:

firebase.auth().currentUser.updateEmail("user@example.com")
Run Code Online (Sandbox Code Playgroud)

firebase是本机firebase对象,就像你从下面的片段得到的那样:

<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script>
  <script>
    // Initialize Firebase
    // TODO: Replace with your project's customized code snippet
    var config = {
      apiKey: "apiKey",
      authDomain: "projectId.firebaseapp.com",
      databaseURL: "https://databaseName.firebaseio.com",
      storageBucket: "bucket.appspot.com",
    };
    firebase.initializeApp(config);
  </script>
Run Code Online (Sandbox Code Playgroud)

但我不明白如何设置我的angular2组件,以便firebase对象在其中可见.可能是一个非常简单的问题需要解决,但我不知道如何解决 - 我不是一个有角度的专家.我希望有和AngularFire api得到对象,但没有.

此外,我试图这样做的原因是我不认为angularfire2 api是完整的(这可以理解,因为它仍处于测试版)并且我正在努力解决这个问题.例如,我想更新用户的电子邮件地址或密码,或向他们发送忘记密码的电子邮件.AngularFire2中似乎还没有这个功能,所以我尝试使用本机Firebase对象来实现.

firebase firebase-authentication angularfire2

12
推荐指数
3
解决办法
2337
查看次数

AngularFire 2 sendPasswordResetEmail

我想用AngularFire2实现重置密码/忘记密码功能.似乎AngularFire2尚未提供函数sendPasswordResetEmail,或者不更新输入.由于sendPasswordResetEmail是AngularFireAuth的一部分,我以为我仍然可以像这样访问这个函数:

(this.af.auth as any).sendPasswordResetEmail('email').
        then((result: any) => {
            console.log('Result:', result);
        }).catch((err: any) => {
            console.log('Err:', err);
        });
Run Code Online (Sandbox Code Playgroud)

打字稿给了我这个错误:

error TS2349: Cannot invoke an expression whose type lacks a call signature.
Run Code Online (Sandbox Code Playgroud)

由于我是typescript + angular2的新手,有什么提示我可以如何访问sendPasswordResetEmail?我的猜测是我必须访问firebase提供的纯js sdk,但我不知道如何.

谢谢.

typescript angularfire2 angular

5
推荐指数
1
解决办法
1287
查看次数

使用Angular2/AngularFire2创建或增加值

我正在使用Angular 2和AngularFire 2与Firebase进行交互.在Firebase中,我有一个标签集合.我想创建或增加标签的数量.我正在使用的代码看起来像这样:

let tagName = "angular";
let tagObs = this.af.database.object(`/tags/${tagName}`);
tagObs.subscribe(function(snapshot) {
    let newValue = (snapshot.$value) ? (snapshot.$value + 1) : 1;
    this.tagObs.set(newValue);
}.bind({ tagObs: tagObs ));
Run Code Online (Sandbox Code Playgroud)

我不清楚为什么,但这不起作用.它创建了一个无限循环,只是不断增加标记值.

使用AngularFire 2,我应该如何创建或增加节点的值(在这种情况下为"标签")?

@Fiddle评论后更新

这是具有"胖箭头"功能的相同代码.存在同样的问题......无限循环.

let tagName = "angular";
let tagObs = this.af.database.object(`/tags/${tagName}`);
tagObs.subscribe((snapshot) => {
    let newValue = (snapshot.$value) ? (snapshot.$value + 1) : 1;
    tagObs.set(newValue);
});
Run Code Online (Sandbox Code Playgroud)

更新#2:有效的代码

为了清楚起见,这是我最终使用的实际代码:

let tagObs = this.af.database.object(`/tags/${tagName}`);
tagObs.transaction(function(currentCount) {
  return currentCount + 1;
});
Run Code Online (Sandbox Code Playgroud)

angularfire2 angular

4
推荐指数
1
解决办法
1624
查看次数

Firebase存储和angularfire2

如何使用角火2从Fire基地存储中获取图像2.非常感谢!

constructor(public af: AngularFire) {
this.items = af.database.list('/message');
this.picture = af.database.list('/profile');
}
Run Code Online (Sandbox Code Playgroud)

firebase firebase-storage angularfire2

2
推荐指数
1
解决办法
7041
查看次数