Я создал модуль с использованием angular CLI и забыл добавить -routing при его создании, теперь я хочу добавить к нему модуль маршрутизации.
ng init --routing
не поможет в angular версии 1.1.1 CLI
Я создал модуль с использованием angular CLI и забыл добавить -routing при его создании, теперь я хочу добавить к нему модуль маршрутизации.
ng init --routing
не поможет в angular версии 1.1.1 CLI
Это не проблема вообще.
Просто добавьте маршрутизацию вручную.
Все, что --routing
флаг --routing
, помимо добавления <router-outlet></router-outlet>
в app.component.html
, это добавление RouterModule.forRoot()
q RouterModule.forRoot()
в отдельный модуль под названием AppRoutingModule
и включение этого модуль в imports
AppModule
.
Так, в app.module.ts
, он добавляет AppRoutingModule
к imports
вашего AppModule
.
AppRoutingModule
определяется как app-routing.module.ts
, который создается из этого шаблона.
Это очень мало, что я скопирую это здесь:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: '',
children: []
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
{path: '', children:[]}
- это просто заполнитель, который вы должны заменить (я знаю, потому что я добавил его в исходный код). Он просто гарантирует, что маршрутизатор не будет жаловаться на <router-outlet>
когда у вас нет маршрутов.
Итак, вернемся к вопросу, что делать? Либо скопируйте файл в свой проект, чтобы он выглядел точно так же, как исходный CLI, и добавьте AppRoutingModule
в ваш imports
AppModule
...
Или просто добавьте RouterModule.forRoot([/* routes here */])
вместо imports
вашего AppModule
. Это все еще будет работать, со встроенной поддержкой отложенной загрузки, а все остальное работает просто отлично.
PS
Помните, что для добавления дочерних маршрутов вы всегда можете сгенерировать больше модулей с маршрутизацией и ng generate module Foo --routing
независимо от того, использовали ли вы флаг --routing
с ng new
или нет. Никакой конфигурации или какой-либо магии, о которой стоит беспокоиться.
ng generate module app-routing-module --module app --flat
app
на имя вашего существующего модуляapp-routing-module
на имя, чтобы дать модулю маршрутизацииВ новом модуле добавьте appRoutes
и RouterModule.forRoot
или RouterModule.forChild
.
// import { ... } from '...';
const appRoutes: Routes = [
{ path: 'some-path', component: SomeComponent }
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes)
],
exports: [
RouterModule
]
})
export class AppRoutingModule {}
<router-outlet></router-outlet>
к вашему компоненту (например, app.component.html
)