दिलचस्प पोस्ट
धारा बनाम दृश्य बनाम Iterators कार्य कैसे <int> int बन जाता है? कैसे स्प्रिंग अनुप्रयोग में सिस्टम पर्यावरण चर को पढ़ने के लिए सत्र.आबंदन () और सत्र के बीच अंतर क्या है। क्लीयर () यदि SQLite में मौजूद नहीं है तो वैकल्पिक तालिका जोड़ें दाएं से बाएं टेक्स्ट HTML इनपुट सी # में स्ट्रिंग के सामने @ क्या है? कैसे बनाने के लिए Eclipse मुझे कमांड लाइन तर्क के लिए संकेत मिलता है मॉड्यूल '../build/Release/bson'] कोड नहीं मिल सकता है: 'MODULE_NOT_FOUND'} js-bson: शुद्ध जेएस संस्करण का उपयोग कर, सी + + बीएसएन एक्सटेंशन लोड करने में विफल कक्षा असंतुलन से निपटना: नुकसान में स्केलिंग योगदान और एसजीडी पेपरक्लिप अपवाद: पेपरक्लिप :: एडाप्टरराइजिस्ट्री :: नोहैंडलर एरर कॉमा ऑपरेटर का उचित उपयोग क्या है? इसे के अंत में क्रॉस (एक्स) बटन के साथ संपादन टेक्स्ट कैसे बनाएं? jQuery के xy दस्तावेज़ DOM ऑब्जेक्ट के निर्देशांक UIScrollView में UIButton स्पर्श देरी है

कोणीय 2 डी त्रुटि – अपवाद: सभी पैरामीटर को हल नहीं कर सकता

मैंने कांगारू 2 में एक बुनियादी ऐप का निर्माण किया है, और एक अजीब समस्या का सामना किया है, जहां मैं अपने घटकों में से किसी एक सेवा को इंजेक्ट नहीं कर सकता यह मेरे द्वारा बनाए गए तीन अन्य घटकों में ठीक से इंजेक्शन लगाता है।

शुरुआत के लिए यह सेवा है (यह बहुत बुनियादी है क्योंकि मैं सिर्फ अभी चीजों का परीक्षण कर रहा हूं):

import { Injectable } from '@angular/core'; @Injectable() export class MobileService { screenWidth: number; screenHeight: number; constructor() { this.screenWidth = window.outerWidth; this.screenHeight = window.outerHeight; window.addEventListener("resize", this.onWindowResize.bind(this) ) } onWindowResize(ev: Event) { var win = (ev.currentTarget as Window); this.screenWidth = win.outerWidth; this.screenHeight = win.outerHeight; } } 

और वह घटक जो इसके साथ काम करने से इनकार करता है:

 import { Component, } from '@angular/core'; import { NgClass } from '@angular/common'; import { ROUTER_DIRECTIVES } from '@angular/router'; import {MobileService} from '../'; @Component({ moduleId: module.id, selector: 'pm-header', templateUrl: 'header.component.html', styleUrls: ['header.component.css'], directives: [ROUTER_DIRECTIVES, NgClass], }) export class HeaderComponent { mobileNav: boolean = false; constructor(public ms: MobileService) { console.log(ms); } } 

मैं ब्राउज़र कंसोल में प्राप्त होने वाली त्रुटि यह है:

अपवादः हेडर कम्पेनेन्ट के लिए सभी पैरामीटर को हल नहीं किया जा सकता: (?)

मेरे पास बूटस्ट्रैप फ़ंक्शन में सेवा है, इसलिए इसमें एक प्रदाता है। और मुझे लगता है कि बिना किसी समस्या के मेरे अन्य घटकों के कंस्ट्रक्टर में इसे इंजेक्ट करने में सक्षम हूं।

क्या कोई भी स्पष्ट कारणों को देखता है कि यह क्यों काम नहीं करेगा?

Solutions Collecting From Web of "कोणीय 2 डी त्रुटि – अपवाद: सभी पैरामीटर को हल नहीं कर सकता"

इसे फ़ाइल से आयात करें जहां इसे सीधे बैरल के बजाय घोषित किया जाता है।

मैं नहीं जानता कि वास्तव में इस मुद्दे का कारण बनता है, लेकिन मैंने इसे कई बार उल्लेख किया (संभवतः कुछ प्रकार की परिपत्र निर्भरता)।

यह प्रति बैरल में निर्यात के आदेश को बदलकर भी तय किया जाना चाहिए (विवरण नहीं पता, लेकिन इसके साथ भी उल्लेख किया गया था)

दिए गए पिछले उत्तर के अतिरिक्त, ऐसा लगता है कि यह त्रुटि तब भी फेंक दी जाती है जब आपकी @Injectable() सेवा में वास्तविक @Injectable() इंजेक्शन @Injectable() डेकोरेटर को याद नहीं होता है तो इससे पहले कि आप चक्रीय निर्भरता बात और आपके आयात / निर्यात के आदेश को डिबग करें, एक साधारण जांच करें कि आपकी सेवा में वास्तव में @Injectable() परिभाषित किया गया है

यह वर्तमान कोनालर नवीनतम, कोनालर 2.1.0 पर लागू होता है।

मैंने इस मामले पर एक मुद्दा खोला

कोणीय 2.2.3 रूप में अब एक forwardRef() उपयोगिता फ़ंक्शन है जो आपको उन प्रदाताओं को इंजेक्ट करने की अनुमति देता है जो अभी तक परिभाषित नहीं हुए हैं।

परिभाषित नहीं करके, मेरा मतलब है कि निर्भरता इंजेक्शन मानचित्र पहचानकर्ता को नहीं जानता है। परिपत्र निर्भरता के दौरान ऐसा क्या होता है। आप कोनेरी में परिपत्र निर्भरताएं हो सकती हैं जो अन्तर्गल के लिए बहुत मुश्किल हैं और देखें।

 export class HeaderComponent { mobileNav: boolean = false; constructor(@Inject(forwardRef(() => MobileService)) public ms: MobileService) { console.log(ms); } } 

मूल प्रश्न के स्रोत कोड में निर्माता के पैरामीटर को @Inject(forwardRef(() => MobileService)) समस्या को ठीक कर देगा।

संदर्भ

कोणीय 2 मैनुअल: फॉरवर्डरफ

कोनेर 2 में आगे के संदर्भ

जैसा कि पहले ही कहा गया है, मुद्दा बैरल के भीतर निर्यात आदेश के कारण होता है, जो परिपत्र निर्भरता के कारण होता है।

एक अधिक विस्तृत व्याख्या यहां दी गई है: https://stackoverflow.com/a/37907696/893630

मुझे सर्विस ए में सेवा बी को इंजेक्शन लगाने और इसके विपरीत में भी इसका सामना करना पड़ा।

व्यक्तिगत रूप से, मुझे खुशी है कि यह तेजी से विफल रहता है क्योंकि यह संभवतः वैसे भी बचा जाना चाहिए । यदि आप चाहते हैं कि आपकी सेवाओं को अधिक मॉड्यूलर / पुन: प्रयोग करने योग्य हो, तो परिपत्र संदर्भों को यथासंभव अधिक से बचने के लिए सर्वोत्तम है। इस पोस्ट के आस-पास के नुकसानों पर प्रकाश डाला गया

इसलिए:

  • यदि आपको लगता है कि कक्षाएं अक्सर अक्सर बातचीत कर रही हैं (मैं सुविधा ईर्ष्या के बारे में बात कर रहा हूँ), तो आप 2 सेवाओं को 1 वर्ग में विलय करने पर विचार कर सकते हैं।
  • यदि उपरोक्त आपके लिए काम नहीं करता है, तो एक तीसरी सेवा , (एक EventService ) का उपयोग करने पर विचार करें, जो दोनों सेवाओं को संदेश विनिमय करने के लिए इंजेक्ट कर सकते हैं।

खोजकर्ताओं के लाभ के लिए; मुझे यह त्रुटि मिली यह केवल एक अनुपस्थित @ प्रतीक था

Ie यह पैदा करता है Can't resolve all parameters for MyHttpService त्रुटि के Can't resolve all parameters for MyHttpService

 Injectable() export class MyHttpService{ } 

लापता @ प्रतीक जोड़ना इसे ठीक करता है

 @Injectable() export class MyHttpService{ } 

आपको यह त्रुटि मिलती है यदि आपके पास सेवा ए है जो स्थैतिक संपत्ति / सेवा बी की विधि पर निर्भर करती है और सेवा बी ही सेवा पर निर्भर करती है एक कुंड निर्भरता इंजेक्शन तो यह एक परिपत्र निर्भरता का एक प्रकार है, हालांकि यह संपत्ति / विधि स्थैतिक होने के बाद से नहीं है। शायद एक बग जो एओटी के साथ संयोजन में होता है

इनजेक्टेबल कन्स्ट्रक्टर () विधि से मापदंडों को निकालकर मेरे मामले के लिए हल किया।

मेरे लिए यह मुद्दा बहुत अधिक परेशान था, मैं एक सेवा के भीतर एक सेवा का उपयोग कर रहा था और इसे ऐप मैडी्यूल में निर्भरता के रूप में जोड़ना भूल गया था! आशा है कि यह किसी व्यक्ति को एप को तोड़ने के लिए कई घंटे बचाएगा जिससे कि उसे इसे फिर से बनाने में सहायता मिल सके

लापता @Injectable() डेकोरेटर के अलावा

अमूर्त वर्ग में @Injectable() डेकोरेटर का उत्पादन किया गया है सेवा के लिए सभी मापदंडों को हल नहीं किया जा सकता: (?) डेकोरेटर की जरूरत है MyService में और साथ ही व्युत्पन्न क्लास BaseService

 //abstract class @Injectable() abstract class BaseService { ... } //MyService @Injectable() export class MyService extends BaseService { ..... } 

मुझे सेवा के नाम को गलत तरीके से गलत तरीके से सामना करना पड़ा, अर्थात कन्स्ट्रक्टर (निजी myService: MyService )।

गलत वर्तनी सेवाओं के लिए, मैं Chrome-> कंसोल में पृष्ठ का निरीक्षण करके यह निर्धारित करने में सक्षम था कि कौन सी सेवा समस्या थी (मैं कई निर्माता में सूचीबद्ध था)। आप ऑब्जेक्ट ऑब्जेक्ट, ऑब्जेक्ट ऑब्जेक्ट, प्रदर्शित करके संदेश के एक हिस्से के रूप में एक "पैरामीटर" सरणी सूची देखेंगे? (या कुछ इस तरह का)। सूचना है कि "?" है और यह उस सेवा की स्थिति है जो समस्या पैदा कर रहा है।

मेरे मामले में, ऐसा इसलिए हुआ क्योंकि मैंने एक निर्माता पैरामीटर के लिए प्रकार की घोषणा नहीं की थी।

मेरे पास ऐसा कुछ था:

 constructor(private URL, private http: Http) { } 

और फिर इसे नीचे दिए गए कोड में बदलने से मेरी समस्या हल हो गई।

 constructor(private URL : string, private http: Http) {} 

बैरल आयात का उपयोग करते समय – पहले अंगूठे के नियम के रूप में इंजेक्टिव आयात करने पर विचार करें।

ऐसा होता है जब एक interface संदर्भ देता है

class लिए interface बदल रहा है, बिना @Inject साथ काम कर रहा है।

आपको @ कम्पेन्न्ट डेकोरेटर में या आपके घटक को घोषित किए जाने वाले मॉड्यूल में प्रदाताओं के सरणी को जोड़ना होगा। घटक के अंदर आप निम्न के रूप में कर सकते हैं:

 @Component({ moduleId: module.id, selector: 'pm-header', templateUrl: 'header.component.html', styleUrls: ['header.component.css'], directives: [ROUTER_DIRECTIVES, NgClass], providers: [MobileService] }) 

कभी-कभी ऐसा तब होता है जब आपने एप। मॉड्यूल.जेएस में काजल के इनबिल्ट मॉड्यूल (एचटीटीपी क्लाइंट मॉड्यूल, एचटीटीपीएआरआरआरआरएआरपीएसपेज आदि) की घोषणा की थी। मुझे एक ही समस्या का सामना करना पड़ा लेकिन अब इसका समाधान किया गया।

मैंने जो गलती की थी, वह एचटीटीपी क्लाइंट मॉड्यूल को कोणीय मॉड्यूल के आयात के बदले प्रदाता में दर्शाती है

गलत # 1: डेकोरेटर भूल गए:

 //Uncaught Error: Can't resolve all parameters for MyFooService: (?). export class MyFooService { ... } 

गलत # 2: "@" प्रतीक को छोड़ना:

 //Uncaught Error: Can't resolve all parameters for MyFooService: (?). Injectable() export class MyFooService { ... } 

गलत # 3: "()" चिह्नों को छोड़ना:

 //Uncaught Error: Can't resolve all parameters for TypeDecorator: (?). @Injectable export class MyFooService { ... } 

गलत # 4: लोअरकेस "i":

 //Uncaught ReferenceError: injectable is not defined @injectable export class MyFooService { ... } 

गलत # 5: आप भूल गए: आयात करें {इंजेक्शन} 'एंजियल / कोर' से;

 //Uncaught ReferenceError: Injectable is not defined @Injectable export class MyFooService { ... } 

सही बात:

 @Injectable() export class MyFooService { ... }