0

constructror电子邮件数据发送到this.user着传数据的功能

因此,存储在AppComponent,接下来,我需要这个variale在功能getUserData进口一些数据... 但执行console.log节目没有意义,也有对users错误:

无法读取属性未定义

“权威性”所以我做了什么错?为什么我不能使用这个传递数据。?

更新

现在user.String是包含“XXXX @ .xx.com” 但我仍然不能将它传递有串。 this.user在getUserData是undefind:/

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()); 
    }); 
    } 

} 

回答

1

大概

this.user = auth.auth.email; 

是存储一个字符串,像 '[email protected]'

当您尝试访问

this.user.auth 

没有.auth属性/关键,因为this.user不是目的。

此外,你必须记住af.auth.subscribe是assynchronous代码,因此你不能访问ngOnInit方法中的this.user,因为你不知道是否有af.auth.subscribe已被调用。

+0

你能再次检查我的代码,并帮助我吗? :) – Tomasz

+0

你需要什么样的帮助? –

+0

我只是数据传递到localStorage的那^^ 我知道它不是好主意后清除。但它的工作 – Tomasz

0

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

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

如果您需要访问整个身份验证的对象,然后将它设为,

this.user = auth; 
+0

这会不会是工作。 我有变化的代码痘痘。检查它请:) – Tomasz