一:Angular-CLI創建應用html
cmd命令:ng new lazy-app --routing (建立一個名叫 lazy-app 的應用,而 --routing
標識生成了一個名叫 app-routing.module.ts
的文件)npm
cd lazy-app (進入lazy-app項目) api
二:建立一個帶路由的特性模塊app
cmd命令:ng generate module customers --routing (建立一個 customers
目錄,其中有兩個文件:CustomersModule
和 CustomersRoutingModule
)spa
備註:若是出現 Error: Cannot find module '@angular-devkit/core',那就 npm install @angular-devkit/core3d
:向特性模塊添加組件code
cmd命令:ng generate component customers/customer-list (在 customers
目錄中建立一個名叫 customer-list
的文件夾,其中包含該組件的四個文件)component
:再添加一個特性模塊router
cmd命令:ng generate module orders --routinghtm
ng generate component orders/order-list
三:創建UI
app.component.html
1 <h1> 2 {{title}} 3 </h1> 4 5 <button routerLink="/customers">Customers</button> 6 <button routerLink="/orders">Orders</button> 7 <button routerLink="">Home</button> 8 9 <router-outlet></router-outlet>
四:配置路由
4.1:頂級路由:app-routing.module.ts (惰性加載的語法:loadChildren
後面緊跟着一個字符串,它指向模塊路徑,而後是一個 #
,而後是該模塊的類名)
1 const routes: Routes = [ 2 { 3 path: 'customers', 4 loadChildren: 'app/customers/customers.module#CustomersModule' 5 }, 6 { 7 path: 'orders', 8 loadChildren: 'app/orders/orders.module#OrdersModule' 9 }, 10 { 11 path: '', 12 redirectTo: '', 13 pathMatch: 'full' 14 } 15 ];
4.2:配置特性模塊的路由
customers-routing.module.ts:
1 import { NgModule } from '@angular/core'; 2 import { Routes, RouterModule } from '@angular/router'; 3 4 import { CustomerListComponent } from './customer-list/customer-list.component'; 5 6 7 const routes: Routes = [ 8 { 9 path: '', 10 component: CustomerListComponent 11 } 12 ]; 13 14 @NgModule({ 15 imports: [RouterModule.forChild(routes)], 16 exports: [RouterModule] 17 }) 18 export class CustomersRoutingModule { }
orders-routing.module.ts:
1 import { NgModule } from '@angular/core'; 2 import { Routes, RouterModule } from '@angular/router'; 3 4 import { OrderListComponent } from './order-list/order-list.component'; 5 6 const routes: Routes = [ 7 { 8 path: '', 9 component: OrderListComponent 10 } 11 ]; 12 13 @NgModule({ 14 imports: [RouterModule.forChild(routes)], 15 exports: [RouterModule] 16 }) 17 export class OrdersRoutingModule { }
五:正常工做
cmd命令:ng serve --open
初始化後臺:
點擊【Customers】後臺
點擊【Orders】後臺
備註:forRoot()
包含的注入器配置是全局性的,好比對路由器的配置。forChild()
中沒有注入器配置,只有像 RouterOutlet
和 RouterLink
這樣的指令。