【问题标题】:Angular2 - EXCEPTION: Cannot read property 'af' of undefinedAngular2 - 异常:无法读取未定义的属性“af”
【发布时间】:2017-05-14 03:49:48
【问题描述】:

我正在使用 Auth0 进行身份验证并使用 AngularFire 为我的数据库构建一个 Angular2 应用程序。在我的构造函数中,我传递了我的 AngularFire af 实例,但我无法在我的回调事件中访问它。还有其他方法可以访问我的 AngularFire 实例吗?

// app/auth.service.ts

import { Injectable } from '@angular/core';
import { tokenNotExpired } from 'angular2-jwt';
import { AngularFire, AuthMethods, AuthProviders } from 'angularfire2';


// Avoid name not found warnings
declare var Auth0Lock: any;
declare var Auth0: any;

@Injectable()
export class Auth {
 // Configure Auth0
  lock = new Auth0Lock('AUTH0_CLIENT_ID', 'AUTH0_DOMAIN', {});


  constructor(private af: AngularFire) {
    // Add callback for lock `authenticated` event

    this.lock.on("authenticated", (authResult) => {
      this.lock.getProfile(authResult.idToken, function(error:any, profile:any){
        if(error){
          throw new Error(error);
        }

        localStorage.setItem('id_token', authResult.idToken);
        localStorage.setItem('profile', JSON.stringify(profile));

        var options = {
        id_token : authResult.idToken,
        api : 'firebase',
        scope : 'openid name email displayName',
        target: 'AUTH0_CLIENT_ID'
        };


        var auth0 = new Auth0({domain:'AUTH0_DOMAIN', clientID:'AUTH0_CLIENT_ID' });
        auth0.getDelegationToken(options, function(err, result){

          if(!err){


            this.af.auth.login(result.id_token, {
              provider: AuthProviders.Custom,
              method: AuthMethods.CustomToken
            });
            console.log(result);
          }
        });
      });
    });
  }
}

【问题讨论】:

    标签: angular firebase auth0 angularfire2


    【解决方案1】:

    那是因为您的this 内部回调函数指向该函数。您有三个选择:

    1. 保存这个类:let that = this 并在回调中使用that.af
    2. 使用 lambda,因为它不会改变 this: (error, profile) => {...}
    3. 您可以调用.bindTo(this) 来运行并将其绑定到类

    另外,我推荐 lambda 方法。

    【讨论】:

    • 谢谢,我花了几天时间试图找出问题所在。
    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多