2017-08-07 18 views
0

(Firebase)データストアから返されたデータからオブジェクトの値を初期化しようとしています。返されるデータは見えますが、ローカル変数に代入することはできません。角2コンストラクタngOnInit未定義のプロパティTypeScript

import ProfileProvider from ../providers/profile 

@Component({...}) 
class Profile { 
userProfile:any 

constructor (public profileProvider: ProfilePRovider) {} 

ngOnInit() { 
    this.profileProvider.getUSerProfile().on ("value", function(snap) { 
    console.log(snap.val()); // this works, prints all my data correctly 
    this.userProfile = snap.val(); // this fails, "cannot set property userProfile of undefined" 
    } 
} 
} 

すべてのヘルプは高く評価され...私は自分自身に角度活字体、2及びFirebaseを教えていますので、これは「当たり前」質問かもしれません! ありがとう!

+0

も、この[どのように適切にangular2 typescriptですで「バインド」を行うには?](https://stackoverflow.com/a/を45136760/2545680) –

答えて

3

thisはコンポーネント自体を参照していないためです。機能を結合したりfat arrow =>機能のいずれかを使用:

...getUserProfile().on('value', function(snap){ 
    }.bind(this)) 

または

...getUserProfile().on('value', snap => { 
    // this is properly bound here 
    }); 
+0

ありがとうございました!私はJavaScript/Type Scriptを初めて使っていますが、これは私を夢中にさせていました...どちらの言語のファンでもありません... – banncee

+0

まあ、忍耐強くて、楽しんで楽しんでください。 – Meir

+0

私は最終的にそれを得るかもしれない、私はそれを楽しむだろうか分からない... :) – banncee

関連する問題