2
在John Papa非常好的course on Angular 2中,他建議根據經驗法則,提供商在@NgModule
而不是@Components
中註冊,因爲很少需要將提供者隱藏其他組件。在Angular 1中,所有提供者都需要在模塊級進行註冊,因此不存在任何爭議。但是,什麼情況下才能打破這種經驗法則呢?在角度模塊或組件中註冊提供商
在John Papa非常好的course on Angular 2中,他建議根據經驗法則,提供商在@NgModule
而不是@Components
中註冊,因爲很少需要將提供者隱藏其他組件。在Angular 1中,所有提供者都需要在模塊級進行註冊,因此不存在任何爭議。但是,什麼情況下才能打破這種經驗法則呢?在角度模塊或組件中註冊提供商
如果您在每個組件中註冊,則每次創建組件的實例時都會創建new object for that service
。因此,如果您需要爲每個組件提供自己的服務,請在組件中提供它們。
如果您需要singleton service
,請在模塊中提供它,並且該模塊的所有組件都將獲得相同的服務實例。