Importing RouterModule
We configure the router by importing RouterModule, and there are two ways to do it:
RouterModule.forRoot
and
RouterModule.forChild
.
RouterModule.forRoot
creates a module that contains all the router directives, the given routes, and the router service itself. And
RouterModule.forChild
creates a module that contains all the directives and the given routes, but does not include the service.
The router library provides two ways to configure the module because it deals with a shared mutable resource—location. That is why we cannot have more than one router service active—they would clobber each other. Therefore we can use
forChild
to configure every lazy-loaded child module, and
forRoot
at the root of the application. forChild
can be called multiple times, whereas
forRoot
can be called only once.
@NgModule({ imports: [RouterModule.forRoot(ROUTES)] }) class MailModule {} @NgModule({ imports: [RouterModule.forChild(ROUTES...