docs(toh-5): copyedits (#3435)

This commit is contained in:
Patrice Chalin 2017-03-30 09:40:50 -07:00 committed by Ward Bell
parent e9a6001d60
commit 22918b40b5
1 changed files with 35 additions and 40 deletions

View File

@ -5,7 +5,7 @@ block includes
- var _appRoutingTsVsAppComp = 'app.module.ts' - var _appRoutingTsVsAppComp = 'app.module.ts'
- var _RoutesVsAtRouteConfig = 'Routes' - var _RoutesVsAtRouteConfig = 'Routes'
- var _RouterModuleVsRouterDirectives = 'RouterModule' - var _RouterModuleVsRouterDirectives = 'RouterModule'
- var _redirectTo = 'redirectTo' - var _redirect = 'redirect'
:marked :marked
There are new requirements for the Tour of Heroes app: There are new requirements for the Tour of Heroes app:
@ -65,13 +65,14 @@ block keep-app-running
## Keep the app transpiling and running ## Keep the app transpiling and running
Enter the following command in the terminal window: Enter the following command in the terminal window:
code-example(language="sh" class="code-shell"). code-example(language="sh" class="code-shell").
npm start npm start
:marked
This command runs the TypeScript compiler in "watch mode", recompiling automatically when the code changes.
The command simultaneously launches the app in a browser and refreshes the browser when the code changes.
:marked :marked
This command runs the TypeScript compiler in "watch mode", recompiling automatically when the code changes.
The command simultaneously launches the app in a browser and refreshes the browser when the code changes.
You can keep building the Tour of Heroes without pausing to recompile or refresh the browser. You can keep building the Tour of Heroes without pausing to recompile or refresh the browser.
## Action plan ## Action plan
@ -103,13 +104,13 @@ code-example(language="sh" class="code-shell").
### *HeroesComponent* ### *HeroesComponent*
`AppComponent` is already dedicated to *Heroes*. `AppComponent` is already dedicated to *Heroes*.
Instead of moving the code out of `AppComponent`, rename it `HeroesComponent` Instead of moving the code out of `AppComponent`, rename it to `HeroesComponent`
and create a separate `AppComponent` shell. and create a separate `AppComponent` shell.
Do the following: Do the following:
* Rename the <span ngio-ex>app.component.ts</span> file as <span ngio-ex>heroes.component.ts</span>. * Rename the <span ngio-ex>app.component.ts</span> file to <span ngio-ex>heroes.component.ts</span>.
* Rename the `AppComponent` class as `HeroesComponent` (rename locally, _only_ in this file). * Rename the `AppComponent` class to `HeroesComponent` (rename locally, _only_ in this file).
* Rename the selector `my-app` as `my-heroes`. * Rename the selector `my-app` to `my-heroes`.
+makeExcerpt('src/app/heroes.component.ts (showing renamings only)', 'renaming') +makeExcerpt('src/app/heroes.component.ts (showing renamings only)', 'renaming')
@ -117,7 +118,7 @@ code-example(language="sh" class="code-shell").
### Create *AppComponent* ### Create *AppComponent*
The new `AppComponent` is the application shell. The new `AppComponent` is the application shell.
It will have some navigation links at the top and a display area below for the pages users navigate to. It will have some navigation links at the top and a display area below.
Perform these steps: Perform these steps:
@ -147,9 +148,9 @@ block app-comp-v1
The app still runs and displays heroes. The app still runs and displays heroes.
:marked :marked
## Adding routing ## Add routing
Instead of displaying automatically, heroes should display after users click a button. Instead of displaying automatically, heroes should display after users click a button.
In other words, users should be able to navigate to the list of heroes. In other words, users should be able to navigate to the list of heroes.
Use the Angular router to enable navigation. Use the Angular router to enable navigation.
@ -307,11 +308,11 @@ block routerLink
+makeExcerpt('src/app/app.module.ts', 'dashboard') +makeExcerpt('src/app/app.module.ts', 'dashboard')
:marked :marked
### Add a redirect route ### Add a !{_redirect} route
Currently, the browser launches with `/` in the address bar.
When the app starts, it should show the dashboard and When the app starts, it should show the dashboard and
display a `/dashboard` URL in the browser address bar. display a `/dashboard` URL in the browser address bar.
Currently, the browser launches with `/` in the address bar.
block redirect-vs-use-as-default block redirect-vs-use-as-default
:marked :marked
@ -387,9 +388,9 @@ block templateUrl-path-resolution
* Define a `heroes` !{_array} property. * Define a `heroes` !{_array} property.
* Inject the `HeroService` in the constructor and hold it in a private `!{_priv}heroService` field. * Inject the `HeroService` in the constructor and hold it in a private `!{_priv}heroService` field.
* Call the service to get heroes inside the Angular `ngOnInit` lifecycle hook. * Call the service to get heroes inside the Angular `ngOnInit()` lifecycle hook.
In this dashboard you specify four heroes (2nd, 3rd, 4th, and 5th)<span if-docs="ts"> with the `Array.slice` method</span>. In this dashboard you specify four heroes (2nd, 3rd, 4th, and 5th)<span if-docs="ts"> with the `Array.slice()` method</span>.
Refresh the browser to see four hero names in the new dashboard. Refresh the browser to see four hero names in the new dashboard.
@ -480,10 +481,8 @@ block route-params
Add the following imports: Add the following imports:
- var _vers = _docsFor == 'dart' ? '' : '.1' - var _vers = _docsFor == 'dart' ? '' : '.1'
+makeExcerpt('src/app/hero-detail.component' + _vers + '.ts', 'added-imports', 'src/app/hero-detail.component') +makeExcerpt('src/app/hero-detail.component' + _vers + '.ts', 'added-imports', 'src/app/hero-detail.component')
- var _ActivatedRoute = _docsFor == 'dart' ? 'RouteParams' : 'ActivatedRoute' - var _ActivatedRoute = _docsFor == 'dart' ? 'RouteParams' : 'ActivatedRoute'
:marked :marked
Inject the `!{_ActivatedRoute}`, `HeroService`, and `Location` services Inject the `!{_ActivatedRoute}`, `HeroService`, and `Location` services
@ -504,7 +503,7 @@ block route-params
block ngOnInit block ngOnInit
:marked :marked
Inside the `ngOnInit` lifecycle hook, use the `params` Observable to Inside the `ngOnInit()` lifecycle hook, use the `params` Observable to
extract the `id` parameter value from the `ActivatedRoute` service extract the `id` parameter value from the `ActivatedRoute` service
and use the `HeroService` to fetch the hero with that `id`. and use the `HeroService` to fetch the hero with that `id`.
@ -519,7 +518,7 @@ block extract-id
If a user re-navigates to this component while a `getHero` request is still processing, If a user re-navigates to this component while a `getHero` request is still processing,
`switchMap` cancels the old request and then calls `HeroService.getHero()` again. `switchMap` cancels the old request and then calls `HeroService.getHero()` again.
- var _str2int = _docsFor == 'dart' ? '<code>int.parse</code> static method' : 'JavaScript (+) operator' - var _str2int = _docsFor == 'dart' ? '<code>int.parse()</code> static method' : 'JavaScript (+) operator'
:marked :marked
The hero `id` is a number. Route parameters are always strings. The hero `id` is a number. Route parameters are always strings.
So the route parameter value is converted to a number with the !{_str2int}. So the route parameter value is converted to a number with the !{_str2int}.
@ -536,10 +535,10 @@ block extract-id
memory leaks, so you don't need to unsubscribe from the route `params` `Observable`. memory leaks, so you don't need to unsubscribe from the route `params` `Observable`.
:marked :marked
### Add *HeroService.getHero* ### Add *HeroService.getHero()*
In the previous code snippet, `HeroService` doesn't have a `getHero()` method. To fix this issue, In the previous code snippet, `HeroService` doesn't have a `getHero()` method. To fix this issue,
open `HeroService` and add a `getHero()` method that filters the heroes list from `getHeroes` by `id`. open `HeroService` and add a `getHero()` method that filters the heroes list from `getHeroes()` by `id`.
+makeExcerpt('src/app/hero.service.ts', 'getHero') +makeExcerpt('src/app/hero.service.ts', 'getHero')
@ -554,13 +553,12 @@ block extract-id
+makeExcerpt('src/app/hero-detail.component.ts', 'goBack') +makeExcerpt('src/app/hero-detail.component.ts', 'goBack')
- var _CanDeactivateGuard = _docsFor == 'dart' ? '<em>routerCanDeactivate</em> hook' : '<em>CanDeactivate</em> guard' - var _CanDeactivateGuard = _docsFor == 'dart' ? '<em>routerCanDeactivate()</em> hook' : '<em>CanDeactivate</em> guard'
- var _CanDeactivateGuardUri = _docsFor == 'dart' ? 'angular2.router/CanDeactivate-class' : 'router/index/CanDeactivate-interface'
.l-sub-section .l-sub-section
:marked :marked
Going back too far could take users out of the app. Going back too far could take users out of the app.
In a real app, you can prevent this issue with the !{_CanDeactivateGuard}. In a real app, you can prevent this issue with the !{_CanDeactivateGuard}.
Read more on the [CanDeactivate](../api/!{_CanDeactivateGuardUri}.html) page. Read more on the [CanDeactivate](../api/router/index/CanDeactivate-interface.html) page.
:marked :marked
You'll wire this method with an event binding to a *Back* button that you'll add to the component template. You'll wire this method with an event binding to a *Back* button that you'll add to the component template.
@ -660,14 +658,13 @@ block extract-id
Delete the routing configuration from `AppModule` and import the `AppRoutingModule`. Delete the routing configuration from `AppModule` and import the `AppRoutingModule`.
Use an ES `import` statement *and* add it to the `NgModule.imports` list. Use an ES `import` statement *and* add it to the `NgModule.imports` list.
:marked
Here is the revised `AppModule`, compared to its pre-refactor state: Here is the revised `AppModule`, compared to its pre-refactor state:
+makeTabs( +makeTabs(
`toh-5/ts/src/app/app.module.ts, toh-5/ts/src/app/app.module.3.ts`, `toh-5/ts/src/app/app.module.ts, toh-5/ts/src/app/app.module.3.ts`,
null, null,
`src/app/app.module.ts (after), src/app/app.module.ts (before)`) `src/app/app.module.ts (after), src/app/app.module.ts (before)`)
:marked :marked
The revised and simplified `AppModule` is focused on identifying the key pieces of the app. The revised and simplified `AppModule` is focused on identifying the key pieces of the app.
.l-main-section .l-main-section
@ -771,14 +768,14 @@ block heroes-component-cleanup
1. Import the `router` from the Angular router library. 1. Import the `router` from the Angular router library.
1. Inject the `router` in the constructor, along with the `HeroService`. 1. Inject the `router` in the constructor, along with the `HeroService`.
1. Implement `gotoDetail()` by calling the `router.navigate()` method. 1. Implement `gotoDetail()` by calling the router `navigate()` method.
+makeExcerpt('src/app/heroes.component.ts', 'gotoDetail') +makeExcerpt('src/app/heroes.component.ts', 'gotoDetail')
:marked :marked
Note that you're passing a two-element *link parameters !{_array}*&mdash;a Note that you're passing a two-element *link parameters !{_array}*&mdash;a
path and the route parameter&mdash;to !{_pathVsName} and the route parameter&mdash;to
the `router.navigate()` method, just as you did in the `[routerLink]` binding the router `navigate()` method, just as you did in the `[routerLink]` binding
back in the `DashboardComponent`. back in the `DashboardComponent`.
Here's the revised `HeroesComponent` class: Here's the revised `HeroesComponent` class:
@ -821,13 +818,12 @@ block heroes-component-cleanup
Here's the content for the component CSS files. Here's the content for the component CSS files.
block css-files +makeTabs(
+makeTabs( `toh-5/ts/src/app/hero-detail.component.css,
`toh-5/ts/src/app/hero-detail.component.css, toh-5/ts/src/app/dashboard.component.css`,
toh-5/ts/src/app/dashboard.component.css`, null,
null, `src/app/hero-detail.component.css,
`src/app/hero-detail.component.css, src/app/dashboard.component.css`)
src/app/dashboard.component.css`)
:marked :marked
### Style the navigation links ### Style the navigation links
@ -848,7 +844,6 @@ block css-files
add a class to the HTML navigation element whose route matches the active route. add a class to the HTML navigation element whose route matches the active route.
All you have to do is define the style for it. All you have to do is define the style for it.
+makeExcerpt('src/app/app.component.ts (active router links)', 'template') +makeExcerpt('src/app/app.component.ts (active router links)', 'template')
:marked :marked