>=RC.5
import the RouterModule
See also https://angular.io/guide/router
@NgModule({
imports: [RouterModule],
...
})
>=RC.2
app.routes.ts
import { provideRouter, RouterConfig } from '@angular/router';
export const routes: RouterConfig = [
...
];
export const APP_ROUTER_PROVIDERS = [provideRouter(routes)];
main.ts
import { bootstrap } from '@angular/platform-browser-dynamic';
import { APP_ROUTER_PROVIDERS } from './app.routes';
bootstrap(AppComponent, [APP_ROUTER_PROVIDERS]);
<=RC.1
Your code is missing
@Component({
...
directives: [ROUTER_DIRECTIVES],
...)}
You can’t use directives like routerLink
or router-outlet
without making them known to your component.
While directive names were changed to be case-sensitive in Angular2, elements still use -
in the name like <router-outlet>
to be compatible with the web-components spec which require a -
in the name of custom elements.
register globally
To make ROUTER_DIRECTIVES
globally available, add this provider to bootstrap(...)
:
provide(PLATFORM_DIRECTIVES, {useValue: [ROUTER_DIRECTIVES], multi: true})
then it’s no longer necessary to add ROUTER_DIRECTIVES
to each component.