के साथ कोणीय सेवा मैं एक ईएस 6 कक्षा को कोणीय सेवा के रूप में उपयोग करने की कोशिश कर रहा हूं लेकिन जब इसे तत्काल किया जाता है, तो विधियों को कन्स्ट्रक्टर चर तक पहुंच नहीं होती है।ईएस 6 कक्षा और बेबेल
class dataWrapperService {
constructor($q, $log) {
this.$q = $q;
this.$log = $log;
}
data() {
console.log(this.$q);
}
}
dataWrapperService.$inject = ['$q', '$log'];
app.service('dataWrapper', dataWrapperService);
एक बार सेवा कोणीय द्वारा इंजेक्शन हो जाता है और मैं इस पर डेटा विधि कॉल, विधि निर्माता मूल्यों के लिए उपयोग किया है विफल रहता है।
// calling the data method results in an error
dataWrapper.data(); //TypeError: Cannot read property '$q' of undefined
// console.log output of dataWrapper:
Object
$log: Object
$q: Q(resolver)
__proto__: smDataWrapperService
constructor: smDataWrapperService($q, $log)
data: data()
__proto__: Object
लेकिन ...
मैं नई dataWrapperService मैन्युअल रूप से और है कि बस ठीक काम करता है।
var dataWrapper = new smDataWrapperService("hello", "sir");
dataWrapper.data(); // "hello"
मुझे यहां क्या याद आ रही है?
अद्यतन:
यह वादा कॉलबैक में केवल हो रहा प्रतीत हो रहा है:
मैं आमतौर पर इस तरह तो/कैच के कार्यों पारित:
$http.get('whatever').then(dataWrapper.data);
लेकिन केवल निम्नलिखित काम करेंगे:
$http.get('whatever').then((response) => smDataWrapper.data(response))
मैंने सोचा कि angular.service ने एक कन्स्ट्रक्टर फ़ंक्शन लिया और इसे "नया" कहा? – Failpunk
हां, क्षमा करें, आप सही हैं। मेरा कोड एक कारखाने के लिए है। मैं इसे सही कर दूंगा। मुझे नहीं पता कि आपके कोड में क्या गलत है। मैंने कई उदाहरण देखे हैं जो इसे आपके कोड में पसंद करते हैं। – AWolf
ऐसा लगता है कि यह केवल वादों के साथ होता है। ऊपर दिए गए उदाहरणों को अपडेट किया गया। – Failpunk