2017-03-15 7 views
0

誰もがこれで私を助けることができたら、それは非常に感謝します。私はルータfirebaseの機能を使用することができません。ファイアベース機能内でルータオブジェクトを使用するにはどうすればいいですか?

import { Component, OnInit } from '@angular/core'; 
import { FirebaseService } from '../../services/firebase.service'; 
import * as firebase from 'firebase'; 
import { Router } from '@angular/router'; 

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

export class ListingsComponent implements OnInit { 
    listings: any; 
    constructor(
    private firebaseService: FirebaseService, 
    public router: Router 
) { 

これは私がルータを使用することができないfirebaseの機能です。

firebase.auth().onAuthStateChanged(function(user) { 
     if (user) { 
     // User is signed in. 
     console.log('loggedIn'); 
     } else { 
     // No user is signed in. 
     console.log('not loggedIn'); 

コンソールも正常に動作しているようです。

 this.router.navigate(['/']); 
     } 
    }); 
    } 

    ngOnInit() { 
    this.firebaseService.getListings().subscribe(listings => { 
     this.listings = listings; 
     console.log(listings); 
    }); 
    } 

} 
+0

あなたがFirebase SDKを使用して代わりのAngularFireの[認証](https://github.com/angular/angularfire2/blobている理由の任意の特定の理由/master/docs/5-user-authentication.md)? –

答えて

0

thisキーワードにアクセスするには、矢印機能を使用してみてください。 AngularFireの認証で

firebase.auth().onAuthStateChanged(user => { 
    if (user) { 
     // User is signed in. 
     console.log('loggedIn'); 
    } else { 
     // No user is signed in. 
     console.log('not loggedIn'); 
     this.router.navigate(['/']); 
    } 
}); 

...

constructor(
    private af: AngularFire, 
    private firebaseService: FirebaseService, 
    public router: Router 
) { 
    this.af.auth.take(1).subscribe(user => { 
     if (user) { 
      // User is signed in. 
      console.log('loggedIn'); 
     } else { 
      // No user is signed in. 
      console.log('not loggedIn'); 
      this.router.navigate(['/']); 
     } 
    }); 
} 
+0

ありがとう@Adam。それは働いている! –

+0

Btw takeはAngularFireAuthのプロパティではありません。それなしでうまくいきます。 –

+0

'import 'rxjs/add/operator/take';' [take](http://reactivex.io/documentation/operators/take.html)があなたのためにサブスクリプションを管理します。これがなければあなたのサブスクリプションは持続します。手動で購読を解除するか、非同期パイプを使うか、 'take 'のような演算子を使う必要があります。 –

関連する問題