使用服務

使用共享服務的一個非常重要的事情是它們必須包含在必須共享它們的最頂層元件的 providers 陣列中。

這是為什麼?好吧,讓我們假設我們在每個 Componentproviders 陣列中包含 MyService 參考。就像是:

@Component({
  templateUrl:"page1.html",
  providers: [MyService]
})

@Component({
  templateUrl:"page2.html",
  providers: [MyService]
})

這樣**,將為每個元件建立一個新的服務**例項,因此一個頁面將儲存資料的例項將與用於獲取資料的例項不同。所以那不行。

為了使整個應用程式使用相同的例項(使服務作為單例服務工作),我們可以在 App Component 中新增它的引用,如下所示:

@Component({
  template: '<ion-nav [root]="rootPage"></ion-nav>',
  providers: [MyService]
})

你也可以在 ionicBootstrap(MyApp, [MyService]); 中新增 MyService 參考,但是根據 Angular2 風格指南

確保 Angular 2 進樣器在最頂級元件處提供服務,以便共享它們。

為什麼?Angular 2 注入器是分層的。

為什麼?在向頂級元件提供服務時,該例項是共享的,並且可供該頂級元件的所有子元件使用。

為什麼?當服務共享方法或狀態時,這是理想的選擇。

為什麼?當兩個不同的元件需要不同的服務例項時,這並不理想。在這種情況下,最好在元件級別提供需要新的單獨例項的服務。

它會工作。這不是最好的做法。載入程式提供程式選項用於配置和覆蓋 Angular 自己的預註冊服務,例如其路由支援。

App Component 將是最好的選擇。