2017-11-09 3 views
0

Ionic 3のパラメータをコンポーネントに渡しています。受信ページのコンストラクタでparamsをプルすることは理解していますが、ngOnInitページにアクセスするのに問題があります。ngOnInit関数のparamsフォームコンストラクタにアクセスできません

だから私のコンストラクタは次のようになります。私は「OWNERID」がページ上に存在しないことを言ってTSのエラーを取得

ngOnInit(){ 
    this.contactsProvider.getContact(ownerId, contactId) 
    .subscribe(response =>{ 
    this.contact = response.json(); 
    console.log('Response: ', this.contact); 
    }) 
    } 

constructor(public navCtrl: NavController, public navParams: NavParams, private contactsProvider: ContactsProvider) { 
    let contactId = this.navParams.get('contactId'); 
    let ownerId = this.navParams.get('ownerId'); 

    // this.contactsProvider.getContact(ownerId, contactId) 
    // .subscribe(response =>{ 
    // this.contact = response.json(); 
    // console.log('Response: ', this.contact); 
    // }) 

    } 

と私の初期化は次のようになります。

私はここで間違っていますか?

入力いただきありがとうございます。

答えて

1

あなたのコンストラクタで宣言された変数はavailables constructor()から、local variablesです。あなたのコンポーネントでどこでもそれらを使用できるようにするコンポーネントのプロパティとして宣言する必要があり、この方法:

@Component({...}) 
private contactId: number; 
private ownerId: number; 
... 

そしてあなたはギュンターとしてthisを使用して、あなたのコンポーネント方法でそれらを使用することができますが、あなたを示しています。

constructor(public navCtrl: NavController, public navParams: NavParams, private contactsProvider: ContactsProvider) { 
    this.contactId = this.navParams.get('contactId'); 
    this.ownerId = this.navParams.get('ownerId'); 

} 


ngOnInit(){ 
    this.contactsProvider.getContact(this.ownerId, this.contactId) 
} 
0

それは、そうでない場合、値が唯一のコンストラクタ内で利用できるようになります

this.contactId = this.navParams.get('contactId'); 
this.ownerId = this.navParams.get('ownerId'); 

する必要があります。

そしてまた、ここ

ngOnInit(){ 
    this.contactsProvider.getContact(this.ownerId, this.contactId) 
+0

私はcontactIdとownerId変数をまず宣言しなければならないようですね。 contactId:any; ownerId:any;クラスのトップに。 – cnak2

+0

はい、宣言する必要があります。 –

関連する問題