Ответ 1
Вам нужно вызвать RouterModule.forRoot
для модуля приложения, а не forChild
. Первая добавляет всех основных поставщиков, а последняя не работает. Вы должны использовать forChild
для дочерних модулей, а не для модуля приложения.
1) Создать новый проект
ng new angular-test
ng g component projects
ng g component typings
2) Добавить простую маршрутизацию
/src/app/app.component.html
<router-outlet></router-outlet>
/src/app/app.module.ts
export const ROUTES: Routes = [
{
path: '',
redirectTo: '/projects',
pathMatch: 'full'
},
{
path: 'projects',
component: ProjectsComponent,
},
{
path: '/typings',
component: TypingsComponent
},
{
path: '**', redirectTo: ''
}
];
@NgModule({
declarations: [
AppComponent,
ProjectsComponent,
TypingsComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule.forChild(ROUTES)
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
EXCEPTION: Error in ./AppComponent class AppComponent - inline template:3:0 caused by: No provider for RouterOutletMap!
ORIGINAL EXCEPTION: No provider for RouterOutletMap!
Я попытался добавить RouterOutletMap к провайдерам в AppModule, исключение не выбрасывает, но приложение не перенаправляет на проекты и не отображает компоненты вложенности
Вам нужно вызвать RouterModule.forRoot
для модуля приложения, а не forChild
. Первая добавляет всех основных поставщиков, а последняя не работает. Вы должны использовать forChild
для дочерних модулей, а не для модуля приложения.
У меня также была эта проблема. это то, как я избегаю этого... некоторое время этому будет помогать. наилучшие пожелания!
Массив маршрутизации - app.routes.ts
const appRoutes:Routes =[
{
path: 'home',
component: CarouselComponent
},
{
path: 'profile',
component:UserDashboardComponentComponent,
children: [
{
path: 'overview',
component: ProfileOverviewComponent
},
{
path: 'post',
component: PostAddComponent
}
]
}
];
export const WebRouting: ModuleWithProviders =RouterModule.forRoot(appRoutes);
app.module.ts
@NgModule({
declarations: [
AppComponent,
CarouselComponent,
.......
],
imports: [
BrowserModule,
MdTabsModule,
MaterialModule,
MdInputModule,
BrowserAnimationsModule,
FormsModule,
HttpModule,
WebRouting
],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule { }
tempale.html
<li>
<a [routerLink]="['/profile/overview']" routerLinkActive="active" >
Overview
</a>
</li>
<li>
<a [routerLink]="['/profile/post']"routerLinkActive="active">
PostAdd
</a>
</li>