Angular CLI'de hizmetler oluştururken, Enjekte edilebilir dekoratör için varsayılan bir "kök" ile "sağlanan" özelliğiyle fazladan meta veri ekliyor.
@Injectable({
providedIn: 'root',
})
ProvidIn tam olarak ne yapıyor? Bunun hizmeti tüm uygulama için 'global' tipte bir tekli hizmet gibi kullanılabilir hale getirdiğini varsayıyorum, ancak bu tür hizmetleri AppModule sağlayıcı dizisinde bildirmek daha temiz olmaz mı?
GÜNCELLEME:
Başkaları için, aşağıdaki paragraf, özellikle hizmetinizi yalnızca bir özellik modülüne sunmak istiyorsanız, bunun başka bir iyi açıklamasını sağladı.
Artık bir sağlayıcıyı doğrudan
@Injectable()
dekoratörün içinde , yeniprovidedIn
özniteliği kullanarak kaydetmenin yeni, önerilen bir yolu var . Uygulamanızın'root'
bir değeri veya herhangi bir modülü olarak kabul eder . Eğer kullandığınız zaman'root'
, senininjectable
uygulamasında bir singleton olarak tescil edilecek ve kök modülünün sağlayıcıları eklemek gerekmez. Benzer şekilde, kullanıyorsanızprovidedIn: UsersModule
, modülün içine eklemedeninjectable
sağlayıcısı olarak kaydedilir . "- https://blog.ninja-squad.com/2018/05/04/what-is-new-angular 6 /UsersModule
providers
GÜNCELLEME 2:
Daha fazla araştırmadan sonra, yalnızca sahip olmanın yararlı olduğuna karar verdim providedIn: 'root'
provide
Kök modül dışındaki herhangi bir modülde bir hizmet istiyorsanız providers
, özellik modülünün dekoratörlerinde diziyi kullanmanız daha iyi olur , aksi takdirde döngüsel bağımlılıklarla boğuşursunuz. Burada ilginç tartışmalar yapılacak - https://github.com/angular/angular-cli/issues/10170