2016-09-30 22 views
7

मैं खुद को कोणीय 2, आयनिक 2 और से परिचित कर रहा हूं, शायद मैं कुछ गलत समझ रहा हूं लेकिन सहायता की उम्मीद कर रहा हूं।कोणीय 2 में एक वादा मूल्य लौटाते हुए, आयनिक 2

मेरे पास स्थानीय स्टोरेज डेटा संग्रहीत करने और प्राप्त करने के उद्देश्य से 'CurrentUser' नामक एक प्रदाता है।

 getProfile(): any { 
     this.local.get("user-profile").then((profile) => { 
     var val = JSON.parse(profile); 
     return val; 
    }); 
} 

इस समारोह getProfile() एक वादा रिटर्न

अगर मैं एक घटक में इस प्रदाता इंजेक्षन। घटक से इस फ़ंक्शन को कॉल करते समय डेटा निर्दिष्ट करने से पहले हल करने का वादा कैसे किया जाएगा?

@Component({ 
    templateUrl: 'build/pages/book_meeting/book_meeting.html' 
}) 
export class BookMeetingPage implements OnInit { 
constructor(public navCtrl: NavController, private _currentUser: CurrentUser) { 
} 

profile: IProfile; 

    ngOnInit(): any { 
    this.profile = this._currentUser.getProfile(); 
    console.log(this.profile);//returns undefined 
    } 
} 

उत्तर

9

तुम सब getProfile समारोह से this.local.get("user-profile") वादा वापस जाने के लिए इतना है कि यह श्रृंखला कर सकते हैं जब आप कॉल सबसे पहले। इसके बाद आप सफलता कॉलबैक में getProfile फ़ंक्शन से डेटा वापस प्राप्त कर सकते हैं।

getProfile(): any { 
    return this.local.get("user-profile").then((profile) => { 
     var val = JSON.parse(profile); 
     return val; 
    }); 
); 

इसके अतिरिक्त आप नहीं डेटा जैसे ही आप एक ajax यह की सफलता पर प्राप्त कर सकते हैं, तो आप वहां प्रतिक्रिया

ngOnInit(): any { 
    this._currentUser.getProfile().then(
    value => { console.log(value) } 
    ) 
} 
+0

हाय प्राप्त कर सकते हैं, मैं त्रुटि app.bundle.js मिलती है: 44529 अपवाद: त्रुटि: अनचाहे (वादे में): TypeError: अपरिभाषित संपत्ति 'तब' नहीं पढ़ सकता। – Arianule

+0

@ एरियनूल माफ करना मैंने जवाब में उल्लेख किया है, लेकिन कोड हिस्से में एक ही चीज़ को बदलना भूल गया, मेरा बुरा। सिर के लिए धन्यवाद। अद्यतन कोड –

+0

हाय वहाँ पंकज की जांच करें। क्या आपने कोड अपडेट किया है, क्षमा करें। क्या मुझे वादा वापस करना चाहिए ... वापसी की लाइनों के साथ कुछ Promise.resolve (वाल)? – Arianule

0

आपका फ़ंक्शन प्राप्त करता है प्रोफ़ाइल एक वादा वापस नहीं करता है। यह कुछ भी नहीं देता है। आप अपने घटक में

getProfile(): any { 
    return this.local.get("user-profile").then((profile) => { 
    var val = JSON.parse(profile); 
    return val; 
}); 

अब के लिए इसे बदल देना चाहिए, आप अपने प्रोफ़ाइल वादा वेरिएबल से डेटा निकाल सकते हैं।

ngOnInit(): any { 
    this._currentUser.getProfile().then(value => { 
     console.log(value); //returns your value. 
    } 
संबंधित मुद्दे