2016-11-15 7 views
1

私はAngular2を学び、アプリケーションをAngular2に変換しています。今、Firebaseからコンテンツを読み込むためのダイナミックページを作成しようとしています。しかし、私は立ち往生した。私が正しく理解していれば、私はコンストラクタのトップロードAngularFireと、ngOnInit()のルーテッドファームが必要です。コンストラクタが最初に呼び出されたので、ルータParamを使用してAngularFireを呼び出すことはできません。AngularFireとAngular2の動的ロードページ

これが今の私のコードです:

export class StaticContentComponent { 
    pagename; 
    isHome; 

    ngOnInit(): void { 
     this.route.params.forEach((params: Params) => { 
      this.pagename = params['pageName']; 
      this.isHome = (this.pagename == 'home'); 
     }); 
    } 

    pagecontent: FirebaseObjectObservable<any[]>; 
    constructor(af: AngularFire, private route: ActivatedRoute) { 
     this.pagecontent = af.database.object('/pages/content/' + this.pagename); 
    } 
} 

私は他のINITを使用して、それらを切り替えることを試みたが、エラーの大きな赤いラインは、ログに表示されます。

また、AngularFireだけのサービスを使用する必要がありますか?私は確信していません、AngularFireの例はそれらを使用しません。

ありがとうございました。

答えて

1

コールをネストすることができます。

constructor(private af: AngularFire, private route: ActivatedRoute) { } 

ngOnInit(): void { 
    this.route.params.forEach((params: Params) => { 
     this.pagename = params['pageName']; 
     this.isHome = (this.pagename == 'home'); 

     this.pagecontent = af.database.object('/pages/content/' + this.pagename); 
    }); 
} 

これは以下のん:

  1. subscribe
  2. のparamsルートに彼らが解決した後、

Firebase EDITからオブジェクトを取得する:あなたの秒のために

AngularFire自体は既にサービスなので、 AFのyはあなたのために十分です、あなたは別のサービスの中にそれをラップする必要はありません。

私がしたいのは、AFを別のサービスでラップし、コンソールデバッグメッセージを追加することです。

+0

答えのThnx。私がコードを試してみたら、私はafを見つけたら "見つけられない"というメッセージを出しました:AngularFire; (未定義のプロパティ 'params'を読み取ることができません) 未定義のプロパティ 'params'を読み取ることができません – user1664803

+0

私は自分の答えを更新しました。 'af:AngularFire'の前に' private'キーワードを追加するのを忘れました –

+0

それは働いています。ありがとう。 – user1664803