2016-04-01 33 views
5

में किसी अन्य सेवा में कस्टम सेवा इंजेक्ट करें, मैं किसी अन्य सेवा में सेवा इंजेक्ट करना चाहता हूं। मुझे मानक कोणीय सेवाओं (एचटीपी, इत्यादि) इंजेक्शन देने में कोई समस्या नहीं है, लेकिन जब मैं अपनी सेवाओं को इंजेक्ट करने की कोशिश कर रहा हूं तो मुझे एक छूट मिलती है।कोणीय 2

उदाहरण:

MyService:

import {Injectable, Inject} from 'angular2/core'; 
import {AnotherService} from '../../services/another.service'; 

@Injectable() 
export class MyService { 
    constructor(Inject(AnotherService) private anotherService: AnotherService) { 
    console.log(this.anotherService.get()); 
    } 
} 

AnotherService:

import {Injectable} from 'angular2/core'; 

@Injectable() 
export class AnotherService { 

    constructor() { } 
    get() { return 'hello'); } 

} 

जब मैं MyService इस्तेमाल करने की कोशिश मैं EXCEPTION: No provider for AnotherService!

मैं constructor(private anotherService: AnotherService) का उपयोग कर की कोशिश की है मिलता है, अभी भी फेंकता एक अपवाद।

धन्यवाद!

उत्तर

5

आपको कोणीय 2 दस्तावेज पढ़ना चाहिए। आपका सटीक मुद्दा यहां कोणीय दस्तावेज़ों में समझाया गया है: https://angular.io/docs/ts/latest/guide/dependency-injection.html#when-the-service-needs-a-service

आपको अपनी सेवा प्रदाता सरणी में जोड़नी होगी। ऐसा करने के बिना आप एचटीपी का उपयोग करने का एकमात्र कारण यह है कि आयनिक इसे आपके लिए प्रदाता सरणी पर रखता है। यदि आप वेनिला एंगुलर 2 का उपयोग कर रहे थे तो आपको अभी भी प्रदाता सरणी में HTTP_PROVIDERS जोड़ना होगा।

एक तरफ ध्यान दें के रूप में, आप की जरूरत नहीं है कि आपके निर्माता में इंजेक्षन, तो आप सिर्फ कर सकते हैं:

constructor(private anotherService: AnotherService) { 
    console.log(this.anotherService.get()); 
} 
+0

आपको बहुत बहुत धन्यवाद! यह अब काम करता है! मैंने घटक के प्रदाताओं में 'अन्य सेवा' निर्दिष्ट की है। मुझे दस्तावेज़ों को और अधिक ध्यान से पढ़ना चाहिए। – NoName