2016-11-29 13 views
6

Uygulamamdaki Tembel Yükleme alt stratejilerini kullanıyorum. En üst düzeyde uygulamada, tüm ajax çağrılarını engelleyen özel bir HTTP sağlayıcım var.Tüm tembel yüklü modüller için özel sağlayıcı nasıl sağlanır

providers:[{ 
     provide: Http, 
     useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, cookieService: CookieService) => new CustomHttp(backend, defaultOptions, cookieService), 
     deps: [XHRBackend, RequestOptions, CookieService] 
    }] 

Tembel yüklü modüllerim bu özel sağlayıcıyı etkilemez. Onları da sağlamak için bir yolu var mı? Component.module dosyasındaki providers özelliğindeki kodun çoğaltması olmadan. Teşekkür ederim!

+0

Ben eklediğiniz tahmin 'HttpModule' ithalatı' için: [...] 'tembel yüklenen modüllerin en az birinin doğru ? –

+0

@ GünterZöchbauer, nope. Angular2 varsayılanından itibaren sadece CommonModule – Mikki

+1

Tembel yüklü modülleri geçersiz kılmazsa otomatik olarak sağlanmalıdır (aynı anahtarla bir sağlayıcı kaydı) –

cevap

2

@SkipSelf() ile düzelttim. Her bir temassız modül kendi enjektörüne sahiptir, bu nedenle bir uygulama seviyesinde genişletilmiş Http sağlayıcısı hakkında hiçbir şey bilmiyor. Http sağlayıcısını servislerinizde (tembel yüklü modüller) enjekte ederken, köşeli modülün enjektöründe Http sağlayıcısını bulmaya çalışıyor ... ve orijinali '@ açısal/http'dan buluyor. Ancak, uygulama düzeyinde 'görünür' olan genişletilmiş Http sağlayıcınızı bulmanız gerekir. Yani yapıcısındaki Http önce @SkipSelf() eklemeyi deneyin:

import { SkipSelf } from '@angular/core'; 

constructor(@SkipSelf() private http: Http) { 
} 
İlgili konular