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