无法将数据从AppComponent传递给函数

时间:2017-05-22 19:06:15

标签: javascript angular firebase firebase-realtime-database firebase-authentication

我将电子邮件数据发送到 constructror 中的this.user

所以它存储在AppComponent中,接下来我需要在函数getUserData中使用这个变量来导入一些数据... 但是console.log显示未定义,users

也有错误

无法阅读属性' auth'未定义的

那么我做错了什么?为什么我不能使用它传递数据。?

更新

现在user.String是一个包含" xxxx @ .xx.com"的字符串。 但我还是不能把它传递给那里。 getUserData中的this.user是unfind:/

import { Component, OnInit } from '@angular/core';
import { RewardsComponent } from './rewards/rewards.component';
import { AngularFire,AuthProviders, AuthMethods, FirebaseAuthState } from 'angularfire2';
import { Router } from '@angular/router'
declare var firebase: any;

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})


export class AppComponent implements OnInit {
  title = 'app works!';
  userData: any = [];
  user: String;

  constructor(public af: AngularFire, private router: Router) {
    af.auth.subscribe(auth => {
      if(auth) {
        this.user = auth.auth.email.toString();
      }
    })
  }

  ngOnInit() {
    this.getUserData();
  }

  getUserData() {
    var ref = firebase.database().ref("/user");
    ref.orderByChild("email").equalTo(this.user).on("child_added", (snapshot) => {
      this.userData.push(snapshot.val());
    });
  }

}

2 个答案:

答案 0 :(得分:1)

可能

this.user = auth.auth.email;

正在存储字符串,例如' someemail@gmail.com'

当您尝试访问

this.user.auth

没有.auth属性/键,因为this.user不是对象。

另外,你必须记住af.auth.subscribe是同步代码,因此你无法在ngOnInit方法中访问this.user,因为你不知道af。 auth.subscribe已经被调用。

答案 1 :(得分:0)

您应该访问电子邮件,因为您只分配 email

 console.log(this.user.email);
 var users = this.user.email;

如果您需要访问整个auth对象,请将其指定为

 this.user = auth;