如何使用angularfire2订阅firebase登录事件

时间:2016-04-17 19:48:04

标签: firebase angularfire ionic2 firebase-authentication

我看到了关于如何订阅firebase auth事件的示例

this.firebase.onAuth((user) => {})

如何使用angularfire2和ionic2以及angular2项目做同样的事情?

constructor(nav:NavController, private auth: FirebaseAuth) {
   auth.onAuth ... // I don't see any subscription events on the firbaseAuth object
}

我在angularfire2文档中看到了这种语法,但不确定|语法的含义以及如何从控制器代码中的@Component声明中执行相同的逻辑:

import {FirebaseAuth} from 'angularfire2';
@Component({
  selector: 'auth-status',
  template: `
    <div *ng-if="auth | async">You are logged in</div>
    <div *ng-if="!(auth | async)">Please log in</div>
  `
})
class App {
  constructor (@Inject(FirebaseAuth) public auth: FirebaseAuth) {}
}

2 个答案:

答案 0 :(得分:2)

我不知道Iconic,但使用angularafire2(2.0.0-beta.2)。这是如何做到这一点。假设已经设置了项目,以便AngularFire是一个可注射服务。 (我按照Angularfire2 Github的说明进行操作。)

@Component({
   .. blah, blah, blah
})
export class MyComponent{

  constructor(private AngularFire af){
    af.subscribe.auth(auth => {
      //the auth object contains the logged in user info
      // if one exists. 
      console.log(auth)
    });
 }

为了从html模板引用auth对象(如在你的例子中),只需将调用返回的auth对象存储为subscribe作为成员变量。您的模板代码只是检查非null以确定是否有登录用户。

答案 1 :(得分:0)

这已在"angularfire2": "^4.0.0-rc.1"

中更新

订阅现在位于authState

import { AngularFireAuth } from 'angularfire2/auth';

因此,在ngModule中,您需要添加

import { AngularFireAuthModule } from 'angularfire2/auth';

然后将其添加到您的导入中,然后添加到app.components.ts

 this.af.authState.subscribe(auth => {
    console.log(auth);
 });