2016-04-01 16 views
5

Başka bir servise hizmet enjekte etmek istiyorum. Standart açısal hizmetleri (Http, vb.) Enjekte etmekte herhangi bir sorunum yok, ama kendi hizmetlerimi enjekte etmeye çalıştığımda bir istisna alıyorum.Başka bir hizmete özel hizmet ver Angular 2

Örnek:

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'); } 

} 

Ben MyService kullanmaya çalıştığınızda ben constructor(private anotherService: AnotherService) kullanarak denedim EXCEPTION: No provider for AnotherService!

olsun, hala atar bir istisna.

Teşekkürler!

cevap

5

Angular 2 belgelerini okumalısınız. Tam sayınız açısal belgelerde açıklanmıştır: https://angular.io/docs/ts/latest/guide/dependency-injection.html#when-the-service-needs-a-service

Hizmetinizi bir sağlayıcı dizisine eklemelisiniz. Bunu yapmadan Http kullanmanın tek nedeni, İyonik'in sizin için sağlayıcılar dizisine koymasıdır. Vanilyalı Angular 2'yi kullanıyorsanız, hala sağlayıcı dizisine HTTP_PROVIDERS eklemek zorunda kalacaksınız. Bir yan not olarak

, sen, sadece yapabilirsiniz Yapıcınızda içinde enjekte ihtiyacım yok:

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

çok teşekkür ederiz! Şuan çalışıyor! Bileşenin sağlayıcılarında “AnotherService” i belirtdim. Dokümanları daha dikkatli okumalıyım. – NoName