我将电子邮件数据发送到 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());
});
}
}
答案 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;