В чем разница между методами forRoot() and forChild() и зачем они нужны?
Когда мы импортируем сервис в lazy loaded модуль, то Angular создает новый экземпляр этого сервиса.
RouterModule объявляет и экспортирует директивы (router-outlet, routerLink, routerLinkActive и т.д.) и сервисы (Router, ActivatedRoute и т.д.). Для того, чтобы избежать дублирования экземпляров сервиса у RouterModule есть два метода: forRoot and forChild.
Из названий методов ясно, что метод forRoot должен быть вызван только в корневом модуле (app.module), а forChild должен вызываться в других (feature) модулях. Таким образом все директивы, компоненты и пайпы всё также будут экспортироваться из модуля, но новый экземпляр сервиса не будет создан.
Отметьте свой прогресс