ValueProvider
इंटरफ़ेस को ध्यान में रखते हुए :
export declare interface ValueProvider extends ValueSansProvider {
/**
* An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
*/
provide: any;
/**
* When true, injector returns an array of instances. This is useful to allow multiple
* providers spread across many files to provide configuration information to a common token.
*/
multi?: boolean;
}
provide
संपत्ति प्रकार का है any
। इसका मतलब है कि कोई भी वस्तु ( Window
कंस्ट्रक्टर को शामिल करते हुए ) उसके अंदर जा सकती है। ऑब्जेक्ट वास्तव में मायने नहीं रखता है, केवल संदर्भ मायने रखता है कि किस प्रदाता को एक निर्माता में एक पैरामीटर को इंजेक्ट करने के लिए उपयोग किया जाना चाहिए।
इसे देशी Window
कंस्ट्रक्टर को इंजेक्शन टोकन के रूप में उपयोग करने के लिए एक अच्छा अभ्यास नहीं माना जाना चाहिए । यह Window
एक ब्राउज़र वातावरण में रन टाइम पर मौजूद होने के कारण संकलन समय पर विफल रहता है, यह भी टाइपस्क्रिप्ट के रूप में मौजूद है, declare
लेकिन कोणीय 8 कंपाइलर Window
प्रदाताओं और Window
एक निर्माता के मापदंडों में सहसंबंधित करने के लिए स्थैतिक कोड विश्लेषण नहीं कर सकता है , क्योंकि असाइनमेंट का काम Window
पूरा हो चुका है ब्राउज़र द्वारा, कोड द्वारा नहीं। यह सुनिश्चित नहीं है कि यह कोणीय 9 में काम क्यों करता है, हालांकि ...
आपको अपना खुद का इंजेक्शन टोकन बनाना चाहिए जो निर्भरता प्रदाता का प्रतिनिधित्व करता है। यह इंजेक्शन टोकन या तो होना चाहिए:
- एक समर्पित स्ट्रिंग (जैसे आपने किया था
'Window'
)
- एक समर्पित
InjectionToken
। उदाहरण के लिएexport const window = new InjectionToken<Window>('window');
इसके अलावा, कोणीय कोड प्लेटफ़ॉर्म एग्नॉस्टिक होना चाहिए (एक ब्राउज़र में और एक Node.js सर्वर पर भी निष्पादन योग्य होना चाहिए) ताकि किसी फ़ैक्टरी का उपयोग करना बेहतर होगा जो रिटर्न करता है window
और undefined
/ null
, फिर घटकों में undefined
/ null
मामले को संभालता है ।