2017-02-23 19 views
5

के लिए सभी पैरामीटर को हल नहीं कर सकता है। मैं अपने ऐप को एओटी संकलन पर स्विच करने की कोशिश कर रहा हूं और जब यह ऐप लोड हो रहा है तो यह उत्पादन वातावरण में यह त्रुटि प्राप्त कर रहा है (यह स्थानीय रूप से ठीक काम करता है)।कोणीय 2 - त्रुटि: IconService

Error: Can't resolve all parameters for IconService: (?, ?)

यह त्रुटि की तरह मॉड्यूल है कि प्रदान कर रहा है IconService पर से आ रही है लगता है। माउस सेवाओं निर्माता

constructor(private http:Http, private iconConfiguror:IconConfiguror) {

तरह लग रहा है तो मेरे सवाल का इस त्रुटि क्या मतलब है है और क्यों यह prod वातावरण में क्या होगा केवल (मैं स्थानीय स्तर पर prod मोड सक्षम करने से कोशिश की है)?

ऐसा लगता है तो इसका मतलब है की तरह है कि http और आइकन कॉन्फ़िगरेशन पैरामीटर प्रदान नहीं की जाती है, लेकिन आइकन config एप्लिकेशन मॉड्यूल स्तर पर प्रदान की जाती है और HttpModuleIconModule जहां IconService प्रदान की जाती है में आयात किया जाता है।

@NgModule({ 
    imports: [ 
     CommonModule, 
     HttpModule, 
    ], 
    declarations: [ 
     IconComponent, 
    ], 
    exports: [ 
     IconComponent, 
    ], 
    providers: [ 
     IconService, 
     __platform_browser_private__.BROWSER_SANITIZATION_PROVIDERS, 
    ], 
}) 

और हमारे आइकन घटक के लिए बैरल।

export * from "./components/icon/icon.configuror"; 

export * from "./components/icon/icon.service.provider"; 

export * from "./components/icon/icon.service"; 

export * from "./components/icon/icon.component"; 

export * from "./components/icon/icon.module"; 
+0

'कन्स्ट्रक्टर (निजी http: एचटीपी, निजी आइकन कॉन्फ़िगरर: आइकन कॉन्फिगरर)' – Alex

+1

@ AJT_82 इसे अद्यतन करने के लिए भूल गया, मैंने भी कोशिश की। – tallkid24

+0

'__decorate' सही है, उन्हें वहां इंजेक्शन नहीं दिया जाना चाहिए। आप 'आइकन कॉन्फ़िगरर' सेवा कैसे प्रदान कर रहे हैं? – altschuler

उत्तर

5

आईकन सेवा को एक अलग तरीके से प्रदान करके इसे फिक्स्ड करें।

{ 
     provide: IconService, 
     useFactory: iconServiceFactory, 
     deps: [Http, IconConfiguror], 
    }, 

और कारखाने में ही

export function iconServiceFactory(http: Http, iconConfiguror: IconConfiguror) { 
    return new IconService(http, iconConfiguror); 
} 

मैं किसी कारण Http प्रदान नहीं की जा रही थी (हालांकि HttpModule आयात किया गया था) के लिए लगता है तो मैं एक निर्भरता के रूप में यह घोषणा करने के लिए किया था।

2

मुझे इसी तरह की समस्या का सामना करना पड़ा है। मैंने बैरल में निर्यात आदेश बदलकर इसे हल किया। निम्नलिखित जबकि एक काम करता है

// index.ts 
export * from './dependant.service'; 
export * from './dependency.service'; 

:

बेसिक सेवा फ़ाइलें:

// dependency.service.ts 
@Injectable() 
export class DependencyService { } 

// dependant.service.ts 
import { DependencyService } from '.'; 

@Injectable() 
export class DependantService { 
    constructor(private dependency: DependencyService) { } 
} 

बैरल के बाद त्रुटि होती है

// index.ts 
export * from './dependency.service'; 
export * from './dependant.service'; 
+0

मैंने अभी इस समस्या का अनुभव किया है, और मुझे आश्चर्य है कि क्या आपको पता है कि ऐसा क्यों होता है? –

+0

@JacquesCornat मैंने इसकी जांच नहीं की है। कम से कम मुझे तार्किक लगता है कि निर्भरता आदेश सही होना चाहिए। हालांकि, मुझे संदेह है कि कैसे सजावटी प्रक्रिया कर रहे हैं। – LoganMzz

1

कभी कभी यह तय करने के लिए एक तरीका है - मैन्युअल रूप का वर्णन मापदंडों। इस त्रुटि के

static get parameters() { return [Http, IconConfiguror] } 

constructor(private http:Http, private iconConfiguror:IconConfiguror) { 
5

एक संभावित कारण आप @Injectable() के साथ अपने IconService वर्ग सजाने नहीं कर रहे हैं, तो है। यदि यही कारण है, तो वर्ग घोषणा के ऊपर सजावट जोड़ना त्रुटि को ठीक करेगा।

0

मेरे लिए काम किया जब मैं जबकि app.module.ts में सेवा का आयात निम्नलिखित इस्तेमाल किया

{provide: AuthService, 
    depends: HttpClientModule} 
0

मेरे मुद्दा यह है कि मैं एक आधार वर्ग से इनहेरिट किया गया था, और मैं @Injectable साथ कि आधार वर्ग सजाया था । विरासत वर्ग वह वर्ग था जिसमें @ इंजेक्शन योग्य विशेषता होनी चाहिए, आधार वर्ग नहीं। ऐसा लगता है कि जब संकलक @ इंजेक्टेबल एटिब्यूट देखता है, तो यह सुनिश्चित करने के लिए जांच करता है कि कन्स्ट्रक्टर में सभी गुण इंजेक्शन दिए जा सकते हैं। यदि नहीं, तो यह एक त्रुटि है।मैंने उस कक्षा से @ इंजेक्शन योग्य एटिब्यूट को हटाकर हल किया।

संबंधित मुद्दे