2017-04-06 4 views
0

Component.ts私はライン1とライン2作品のはconsole.log正しくfirebaseサービス

ngOnInit() {   
     this.profileService.getBasicProfile(this.uid).subscribe(
     basic => { 
      console.log(basic); //line 1 
      this.usedBasicProfile = basic; 
      console.log(this.usedBasicProfile); //line 2 
     } 
    ) 
     console.log(this.usedBasicProfile); //line 3 
} 

Service.ts

savedBasicProfile: FirebaseObjectObservable<UserBasic>; 

getBasicProfile(uid: string) { 
    this.savedBasicProfile = this.af.database.object('/users/user'+uid); 
    console.log(this.savedBasicProfile); 
    return this.savedBasicProfile; 
} 

から得られたデータが、ラインを保存することができない理由3出力は不定です。 ご協力いただければ幸いです。

///////////////////////////編集

constructor(
    private authService: AuthGuard, 
    private profileService: ProfileService 
) 
{ 
    this.uid = this.authService.getUid();  
    console.log(this.uid); 

    this.profileService.getBasicProfile(this.uid).subscribe(
    basic => { 
     this.usedBasicProfile = basic; //how to make this line work? 
    } 
); 
    console.log(this.usedBasicProfile); 
} 

答えて

0

あなたは観測に関わる非同期プロセスを理解する必要があります。

ngOnInit() {   
     this.profileService.getBasicProfile(this.uid) executed 
     console.log(this.usedBasicProfile); //line 3 executed 
} 

最初にサービスコールが行われ、3行目が実行されます。 データが返された場合のみ、サブスクライブを使用すると、値

.subscribe(///called only when the data is returned 
      basic => { 
       console.log(basic); //line 1 executed 
       this.usedBasicProfile = basic; 
       console.log(this.usedBasicProfile); //line 2 
      } 
+0

感謝を取得しますその時点でトリガされます、私は問題が何であるかを理解し、私は何かをしようとした後、私はまだ作り方見当がつかない.subsribe()内のコードが実行されます。私に例を挙げてください。ありがとうたくさん – Mazo

+0

subscribe()でコードを作る方法.....私はまだ考えていません – Mazo

+0

それはできません。 Observablesはそのように設計されています – Aravind

関連する問題