Просто хочу убедиться, что понимаю семантику @Injectable(providedIn: 'root')
. До Angular 6, если мы импортируем модуль из NPM, который содержит службу, мы объявляли этот модуль в нашем модуле приложения, чтобы все приложение имело доступ к службе. Что-то вроде этого:
import { SomeNPModule } from '@ngx/SomeNPModule';
@NgModule({
imports: [
BrowserModule,
SomeNPModule
]
})
export class AppModule {}
Теперь мы можем внедрить SomeService
, который предоставляет модуль, потому что мы импортировали модуль. С Angular 6 необходимость импортировать SomeNPModule
в AppModule
устранена, потому что мы используем @Injectable(providedIn: 'root
) в самой службе, и когда аннотация запускается, она автоматически делает службу доступной в контейнере для инъекций root
?
Обновлять
Итак, у нас есть ответ, но я думаю, что он частично завершен в том смысле, что если мы хотим настроить службу, это обычно делается с помощью метода forRoot
в модуле службы... как это делается с помощью Router
. Итак, если предположить, что мы не хотим настраивать службу, все, что нам нужно сделать, это внедрить ее, но если мы хотим настроить службу, нам нужно следовать шаблону Router
. Поправьте меня, если я допустил ошибки в комментариях, пожалуйста.