From c15a68e591940d1ec2a274dd36ba92226224925b Mon Sep 17 00:00:00 2001 From: Brandon Roberts Date: Fri, 26 Aug 2016 23:19:27 -0500 Subject: [PATCH] docs(router): Added and organized more router dev guide content Moved all heroes functionality into milestone 2 Crisis Center initial functionality is milestone 3 Admin feature module as milestone 4 including route guard examples Updated milestone 5 to lazy load admin feature module Added examples for CanLoad, CanActivateChildren guard, component-less routes Added section on explanation of ActivatedRoute Added section on animating route components Added section on relative navigation --- public/docs/_examples/router/e2e-spec.ts | 7 +- .../app/admin/admin-dashboard.component.1.ts | 9 + .../admin-dashboard.component.ts} | 5 +- .../router/ts/app/admin/admin.component.ts | 17 + .../router/ts/app/admin/admin.module.ts | 28 + .../router/ts/app/admin/admin.routing.1.ts | 31 + .../router/ts/app/admin/admin.routing.2.ts | 37 + .../router/ts/app/admin/admin.routing.3.ts | 35 + .../router/ts/app/admin/admin.routing.ts | 34 + .../manage-crises.component.ts} | 3 +- .../ts/app/admin/manage-heroes.component.ts | 9 + .../router/ts/app/app.component.1.ts | 2 +- .../router/ts/app/app.component.2.ts | 2 +- .../router/ts/app/app.component.3.ts | 4 +- .../router/ts/app/app.component.4.ts | 9 +- .../_examples/router/ts/app/app.component.ts | 9 +- .../_examples/router/ts/app/app.module.1.ts | 5 +- .../_examples/router/ts/app/app.module.2.ts | 6 +- .../_examples/router/ts/app/app.module.3.ts | 23 +- .../_examples/router/ts/app/app.module.4.ts | 17 +- .../_examples/router/ts/app/app.module.5.ts | 28 + .../_examples/router/ts/app/app.module.ts | 14 +- .../_examples/router/ts/app/app.routing.1.ts | 8 +- .../_examples/router/ts/app/app.routing.3.ts | 4 +- .../_examples/router/ts/app/app.routing.6.ts | 28 +- .../_examples/router/ts/app/app.routing.ts | 32 +- .../router/ts/app/auth-guard.service.2.ts | 31 +- .../router/ts/app/auth-guard.service.3.ts | 40 + .../router/ts/app/auth-guard.service.4.ts | 47 + .../router/ts/app/auth-guard.service.ts | 43 +- .../_examples/router/ts/app/auth.service.ts | 4 +- .../ts/app/can-deactivate-guard.service.1.ts | 3 +- .../ts/app/can-deactivate-guard.service.ts | 4 +- .../crisis-center-home.component.ts | 13 + .../crisis-center/crisis-center.module.1.ts | 10 +- .../app/crisis-center/crisis-center.module.ts | 12 +- .../crisis-center/crisis-center.routing.1.ts | 27 +- .../crisis-center/crisis-center.routing.2.ts | 54 +- .../crisis-center/crisis-center.routing.3.ts | 45 +- .../crisis-center/crisis-center.routing.4.ts | 57 - .../crisis-center/crisis-center.routing.5.ts | 53 - .../crisis-center/crisis-center.routing.ts | 54 +- .../crisis-detail-resolve.service.ts | 3 +- .../crisis-detail.component.1.ts | 74 +- .../crisis-center/crisis-detail.component.ts | 56 +- .../crisis-center/crisis-list.component.1.ts | 11 +- .../crisis-center/crisis-list.component.ts | 45 +- .../ts/app/heroes/hero-detail.component.1.ts | 29 +- .../ts/app/heroes/hero-detail.component.ts | 65 +- .../ts/app/heroes/hero-list.component.ts | 19 +- .../router/ts/app/login.component.ts | 2 +- public/docs/ts/latest/guide/_data.json | 2 +- public/docs/ts/latest/guide/router.jade | 970 ++++++++++++------ 53 files changed, 1422 insertions(+), 757 deletions(-) create mode 100644 public/docs/_examples/router/ts/app/admin/admin-dashboard.component.1.ts rename public/docs/_examples/router/ts/app/{crisis-center/crisis-admin.component.ts => admin/admin-dashboard.component.ts} (86%) mode change 100755 => 100644 create mode 100755 public/docs/_examples/router/ts/app/admin/admin.component.ts create mode 100644 public/docs/_examples/router/ts/app/admin/admin.module.ts create mode 100644 public/docs/_examples/router/ts/app/admin/admin.routing.1.ts create mode 100644 public/docs/_examples/router/ts/app/admin/admin.routing.2.ts create mode 100644 public/docs/_examples/router/ts/app/admin/admin.routing.3.ts create mode 100644 public/docs/_examples/router/ts/app/admin/admin.routing.ts rename public/docs/_examples/router/ts/app/{crisis-center/crisis-admin.component.1.ts => admin/manage-crises.component.ts} (63%) create mode 100644 public/docs/_examples/router/ts/app/admin/manage-heroes.component.ts create mode 100644 public/docs/_examples/router/ts/app/app.module.5.ts create mode 100644 public/docs/_examples/router/ts/app/auth-guard.service.3.ts create mode 100644 public/docs/_examples/router/ts/app/auth-guard.service.4.ts create mode 100644 public/docs/_examples/router/ts/app/crisis-center/crisis-center-home.component.ts delete mode 100644 public/docs/_examples/router/ts/app/crisis-center/crisis-center.routing.4.ts delete mode 100644 public/docs/_examples/router/ts/app/crisis-center/crisis-center.routing.5.ts diff --git a/public/docs/_examples/router/e2e-spec.ts b/public/docs/_examples/router/e2e-spec.ts index bf672c3f01..a82ebd08a5 100644 --- a/public/docs/_examples/router/e2e-spec.ts +++ b/public/docs/_examples/router/e2e-spec.ts @@ -16,8 +16,8 @@ describe('Router', function () { crisisHref: hrefEles.get(0), crisisList: element.all(by.css('my-app > ng-component > ng-component li')), - crisisDetail: element(by.css('my-app > ng-component > ng-component > div')), - crisisDetailTitle: element(by.css('my-app > ng-component > ng-component > div > h3')), + crisisDetail: element(by.css('my-app > ng-component > ng-component > ng-component > div')), + crisisDetailTitle: element(by.css('my-app > ng-component > ng-component > ng-component > div > h3')), heroesHref: hrefEles.get(1), heroesList: element.all(by.css('my-app > ng-component li')), @@ -34,7 +34,7 @@ describe('Router', function () { expect(page.hrefs.count()).toEqual(4, 'should be 4 dashboard choices'); expect(page.crisisHref.getText()).toEqual('Crisis Center'); expect(page.heroesHref.getText()).toEqual('Heroes'); - expect(page.adminHref.getText()).toEqual('Crisis Admin'); + expect(page.adminHref.getText()).toEqual('Admin'); expect(page.loginHref.getText()).toEqual('Login'); }); @@ -118,7 +118,6 @@ describe('Router', function () { crisisText = text.substr(text.indexOf(' ')).trim(); return crisisEle.click(); }).then(function () { - expect(page.crisisList.count()).toBe(0, 'should no longer see crisis center entries'); expect(page.crisisDetail.isPresent()).toBe(true, 'should be able to see crisis detail'); expect(page.crisisDetailTitle.getText()).toContain(crisisText); let inputEle = page.crisisDetail.element(by.css('input')); diff --git a/public/docs/_examples/router/ts/app/admin/admin-dashboard.component.1.ts b/public/docs/_examples/router/ts/app/admin/admin-dashboard.component.1.ts new file mode 100644 index 0000000000..ffa3e3cb8f --- /dev/null +++ b/public/docs/_examples/router/ts/app/admin/admin-dashboard.component.1.ts @@ -0,0 +1,9 @@ +// #docregion +import { Component } from '@angular/core'; + +@Component({ + template: ` +

Dashboard

+ ` +}) +export class AdminDashboardComponent { } diff --git a/public/docs/_examples/router/ts/app/crisis-center/crisis-admin.component.ts b/public/docs/_examples/router/ts/app/admin/admin-dashboard.component.ts old mode 100755 new mode 100644 similarity index 86% rename from public/docs/_examples/router/ts/app/crisis-center/crisis-admin.component.ts rename to public/docs/_examples/router/ts/app/admin/admin-dashboard.component.ts index 38fe14a38e..8c8e481643 --- a/public/docs/_examples/router/ts/app/crisis-center/crisis-admin.component.ts +++ b/public/docs/_examples/router/ts/app/admin/admin-dashboard.component.ts @@ -6,15 +6,14 @@ import 'rxjs/add/operator/map'; @Component({ template: ` -

CRISIS ADMINISTRATION

-

Manage your crises here

+

Dashboard

Session ID: {{ sessionId | async }}

Token: {{ token | async }}

` }) -export class CrisisAdminComponent implements OnInit { +export class AdminDashboardComponent implements OnInit { sessionId: Observable; token: Observable; diff --git a/public/docs/_examples/router/ts/app/admin/admin.component.ts b/public/docs/_examples/router/ts/app/admin/admin.component.ts new file mode 100755 index 0000000000..30abfa4524 --- /dev/null +++ b/public/docs/_examples/router/ts/app/admin/admin.component.ts @@ -0,0 +1,17 @@ +// #docregion +import { Component } from '@angular/core'; + +@Component({ + template: ` +

ADMIN

+ + + ` +}) +export class AdminComponent { +} diff --git a/public/docs/_examples/router/ts/app/admin/admin.module.ts b/public/docs/_examples/router/ts/app/admin/admin.module.ts new file mode 100644 index 0000000000..dce2ce30e2 --- /dev/null +++ b/public/docs/_examples/router/ts/app/admin/admin.module.ts @@ -0,0 +1,28 @@ +// #docplaster +// #docregion +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { AdminComponent } from './admin.component'; +import { AdminDashboardComponent } from './admin-dashboard.component'; +import { ManageCrisesComponent } from './manage-crises.component'; +import { ManageHeroesComponent } from './manage-heroes.component'; + +import { adminRouting } from './admin.routing'; + +@NgModule({ + imports: [ + CommonModule, + adminRouting + ], + declarations: [ + AdminComponent, + AdminDashboardComponent, + ManageCrisesComponent, + ManageHeroesComponent + ] +}) +// #docregion admin-module-export +export class AdminModule {} +// #enddocregion admin-module-export +// #enddocregion diff --git a/public/docs/_examples/router/ts/app/admin/admin.routing.1.ts b/public/docs/_examples/router/ts/app/admin/admin.routing.1.ts new file mode 100644 index 0000000000..a620f3ba51 --- /dev/null +++ b/public/docs/_examples/router/ts/app/admin/admin.routing.1.ts @@ -0,0 +1,31 @@ +// #docplaster +// #docregion +import { ModuleWithProviders } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { AdminComponent } from './admin.component'; +import { AdminDashboardComponent } from './admin-dashboard.component'; +import { ManageCrisesComponent } from './manage-crises.component'; +import { ManageHeroesComponent } from './manage-heroes.component'; + +// #docregion admin-routes +const adminRoutes: Routes = [ + { + path: 'admin', + component: AdminComponent, + children: [ + { + path: '', + children: [ + { path: 'crises', component: ManageCrisesComponent }, + { path: 'heroes', component: ManageHeroesComponent }, + { path: '', component: AdminDashboardComponent } + ] + } + ] + } +]; + +export const adminRouting: ModuleWithProviders = RouterModule.forChild(adminRoutes); +// #enddocregion admin-routes +// #enddocregion diff --git a/public/docs/_examples/router/ts/app/admin/admin.routing.2.ts b/public/docs/_examples/router/ts/app/admin/admin.routing.2.ts new file mode 100644 index 0000000000..9fa3f10e4a --- /dev/null +++ b/public/docs/_examples/router/ts/app/admin/admin.routing.2.ts @@ -0,0 +1,37 @@ +// #docplaster +// #docregion +import { ModuleWithProviders } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { AdminComponent } from './admin.component'; +import { AdminDashboardComponent } from './admin-dashboard.component'; +import { ManageCrisesComponent } from './manage-crises.component'; +import { ManageHeroesComponent } from './manage-heroes.component'; + +// #docregion admin-route, can-activate-child +import { AuthGuard } from '../auth-guard.service'; + +const adminRoutes: Routes = [ + { + path: 'admin', + component: AdminComponent, + canActivate: [AuthGuard], + children: [ + { + path: '', + children: [ + { path: 'crises', component: ManageCrisesComponent }, + { path: 'heroes', component: ManageHeroesComponent }, + { path: '', component: AdminDashboardComponent } + ], + // #enddocregion admin-route + // #docregion can-activate-child + canActivateChild: [AuthGuard] + // #docregion admin-route + } + ] + } +]; + +export const adminRouting: ModuleWithProviders = RouterModule.forChild(adminRoutes); +// #enddocregion diff --git a/public/docs/_examples/router/ts/app/admin/admin.routing.3.ts b/public/docs/_examples/router/ts/app/admin/admin.routing.3.ts new file mode 100644 index 0000000000..3b4051a819 --- /dev/null +++ b/public/docs/_examples/router/ts/app/admin/admin.routing.3.ts @@ -0,0 +1,35 @@ +// #docplaster +// #docregion +import { ModuleWithProviders } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { AdminComponent } from './admin.component'; +import { AdminDashboardComponent } from './admin-dashboard.component'; +import { ManageCrisesComponent } from './manage-crises.component'; +import { ManageHeroesComponent } from './manage-heroes.component'; + +// #docregion admin-route +import { AuthGuard } from '../auth-guard.service'; + +// #docregion can-activate-child +const adminRoutes: Routes = [ + { + path: 'admin', + component: AdminComponent, + canActivate: [AuthGuard], + children: [ + { + path: '', + canActivateChild: [AuthGuard], + children: [ + { path: 'crises', component: ManageCrisesComponent }, + { path: 'heroes', component: ManageHeroesComponent }, + { path: '', component: AdminDashboardComponent } + ] + } + ] + } +]; + +export const adminRouting: ModuleWithProviders = RouterModule.forChild(adminRoutes); +// #enddocregion diff --git a/public/docs/_examples/router/ts/app/admin/admin.routing.ts b/public/docs/_examples/router/ts/app/admin/admin.routing.ts new file mode 100644 index 0000000000..bc5d13554c --- /dev/null +++ b/public/docs/_examples/router/ts/app/admin/admin.routing.ts @@ -0,0 +1,34 @@ +// #docplaster +// #docregion +import { ModuleWithProviders } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { AdminComponent } from './admin.component'; +import { AdminDashboardComponent } from './admin-dashboard.component'; +import { ManageCrisesComponent } from './manage-crises.component'; +import { ManageHeroesComponent } from './manage-heroes.component'; + +// #docregion admin-route +import { AuthGuard } from '../auth-guard.service'; + +const adminRoutes: Routes = [ + { + path: '', + component: AdminComponent, + canActivate: [AuthGuard], + children: [ + { + path: '', + canActivateChild: [AuthGuard], + children: [ + { path: 'crises', component: ManageCrisesComponent }, + { path: 'heroes', component: ManageHeroesComponent }, + { path: '', component: AdminDashboardComponent } + ] + } + ] + } +]; + +export const adminRouting: ModuleWithProviders = RouterModule.forChild(adminRoutes); +// #enddocregion diff --git a/public/docs/_examples/router/ts/app/crisis-center/crisis-admin.component.1.ts b/public/docs/_examples/router/ts/app/admin/manage-crises.component.ts similarity index 63% rename from public/docs/_examples/router/ts/app/crisis-center/crisis-admin.component.1.ts rename to public/docs/_examples/router/ts/app/admin/manage-crises.component.ts index a8dacc8549..d3176563eb 100644 --- a/public/docs/_examples/router/ts/app/crisis-center/crisis-admin.component.1.ts +++ b/public/docs/_examples/router/ts/app/admin/manage-crises.component.ts @@ -3,8 +3,7 @@ import { Component } from '@angular/core'; @Component({ template: ` -

CRISIS ADMINISTRATION

Manage your crises here

` }) -export class CrisisAdminComponent { } +export class ManageCrisesComponent { } diff --git a/public/docs/_examples/router/ts/app/admin/manage-heroes.component.ts b/public/docs/_examples/router/ts/app/admin/manage-heroes.component.ts new file mode 100644 index 0000000000..7f3a39893d --- /dev/null +++ b/public/docs/_examples/router/ts/app/admin/manage-heroes.component.ts @@ -0,0 +1,9 @@ +// #docregion +import { Component } from '@angular/core'; + +@Component({ + template: ` +

Manage your heroes here

+ ` +}) +export class ManageHeroesComponent { } diff --git a/public/docs/_examples/router/ts/app/app.component.1.ts b/public/docs/_examples/router/ts/app/app.component.1.ts index 1b0aba0044..21e9aa417d 100644 --- a/public/docs/_examples/router/ts/app/app.component.1.ts +++ b/public/docs/_examples/router/ts/app/app.component.1.ts @@ -6,7 +6,7 @@ import { Component } from '@angular/core'; selector: 'my-app', // #docregion template template: ` -

Component Router

+

Angular Router