2017-02-09 27 views
6

Açısal öğreticiden geçiyordum ve HTTP bölümü https://angular.io/docs/ts/latest/tutorial/toh-pt6.html'dan geçerken, NgModule'de içe aktarma bildiriminin hangi sıralamanın uygulanıp uygulanmadığı konusunda bir fark yarattığını fark ettim. Bunun nedenini bilmek isterim.NgModule içe aktarma işlemi neden önemlidir?

 

    @NgModule({ 
     imports: [ 
     BrowserModule, 
     FormsModule, 
     HttpModule, 
     InMemoryWebApiModule.forRoot(InMemoryDataService), 
     AppRoutingModule 
     ], 
    ... 
    }) 

ancak şu değil:

Özellikle bu çalışır. Kahramanlar listesi yüklenmiyor. HttpModule'ü InMemoryWebApiModule SONRA bildirildiğini unutmayın:

 

    @NgModule({ 
     imports: [ 
     BrowserModule, 
     FormsModule, 
     InMemoryWebApiModule.forRoot(InMemoryDataService), 
     HttpModule, 
     AppRoutingModule 
     ], 
    ... 
    }) 

öğretici Eğik 2.4.4 kullanıyor. Hem Firefox hem de IE'deki problemi fark ettim. Google aramalarımda sorunun kaynağını gösteren hiçbir şey bulamadım.

cevap

3

Sağlayıcıların sırası, dışa aktarılan bileşenler, yönergeler veya borular için önemli değil, çünkü çakışmalar hatalarla sonuçlanır.

InMemoryWebApiModule.forRoot(InMemoryDataService),Http'u geçersiz kılar ve daha sonra HttpModule verilirse, bu seçenek geçersiz kılınır. Sağlayıcılar, daha önce kayıtlı olan sağlayıcıları aynı anahtarla geçersiz kılar.

+2

Teşekkürler bu yardımcı olur. Bunu InMemoryWebApi'nin readme'sinde buldum: "InMemoryWebApiModule XHRBackend sağlayıcısının tüm diğerlerinin yerini almasını sağlamak için her zaman HttpModule'den sonra InMemoryWebApiModule'ı içe aktarın." Bu temelde söylediğin şey. – hashpyrit

+1

ithalat siparişi de önemlidir, özel bir modülden sonra AppRoutingModule koyarsam, bu özel modülü AppRoutingModule'de tanımlanan yerine ilk sayfa olarak yükleyeceğimi fark ettim. – albanx

İlgili konular