diff --git a/aio/content/guide/animations.md b/aio/content/guide/animations.md
index 4f48dae2ce..1928446ae0 100644
--- a/aio/content/guide/animations.md
+++ b/aio/content/guide/animations.md
@@ -66,7 +66,7 @@ The examples in this page are available as a .
## Quickstart example: Transitioning between two states
@@ -172,7 +172,7 @@ controls the timing of switching between one set of styles and the next:
@@ -220,7 +220,7 @@ transitions that apply regardless of which state the animation is in. For exampl
@@ -237,7 +237,7 @@ regardless of what state it was in before it left.
@@ -247,7 +247,7 @@ The wildcard state `*` also matches `void`.
## Example: Entering and leaving
@@ -258,7 +258,7 @@ entering and leaving of elements:
* Enter: `void => *`
* Leave: `* => void`
-For example, in the `animations` array below there are two transitions that use
+For example, in the `animations` array below there are two transitions that use
the `void => *` and `* => void` syntax to animate the element in and out of the view.
@@ -294,7 +294,7 @@ These two common animations have their own aliases:
## Example: Entering and leaving from different states
@@ -313,7 +313,7 @@ This gives you fine-grained control over each transition:
@@ -346,7 +346,7 @@ If you don't provide a unit when specifying dimension, Angular assumes the defau
## Automatic property calculation
@@ -405,7 +405,7 @@ and the delay (or as the *second* value when there is no delay):
@@ -427,7 +427,7 @@ slight delay of 10 milliseconds as specified in `'0.2s 10 ease-out'`:
## Multi-step animations with keyframes
@@ -461,7 +461,7 @@ offsets receive offsets `0`, `0.5`, and `1`.
## Parallel animation groups
@@ -501,7 +501,7 @@ those callbacks like this:
-The callbacks receive an `AnimationEvent` that contains contains useful properties such as
+The callbacks receive an `AnimationEvent` that contains contains useful properties such as
`fromState`, `toState` and `totalTime`.
-Those callbacks will fire whether or not an animation is picked up.
\ No newline at end of file
+Those callbacks will fire whether or not an animation is picked up.
diff --git a/aio/content/guide/aot-compiler.md b/aio/content/guide/aot-compiler.md
index 996658dec3..a7638dcc3e 100644
--- a/aio/content/guide/aot-compiler.md
+++ b/aio/content/guide/aot-compiler.md
@@ -297,8 +297,8 @@ The _RxJs_ Observable library is an essential Angular dependency published as an
Luckily, there is a Rollup plugin that modifies _RxJs_
to use the ES `import` and `export` statements that Rollup requires.
-Rollup then preserves the parts of `RxJS` referenced by the application
-in the final bundle. Using it is straigthforward. Add the following to
+Rollup then preserves the parts of `RxJS` referenced by the application
+in the final bundle. Using it is straigthforward. Add the following to
the `plugins` array in `rollup-config.js`:
@@ -307,7 +307,7 @@ the `plugins` array in `rollup-config.js`:
*Minification*
Rollup tree shaking reduces code size considerably. Minification makes it smaller still.
-This cookbook relies on the _uglify_ Rollup plugin to minify and mangle the code.
+This cookbook relies on the _uglify_ Rollup plugin to minify and mangle the code.
Add the following to the `plugins` array:
@@ -317,7 +317,7 @@ Add the following to the `plugins` array:
In a production setting, you would also enable gzip on the web server to compress
the code into an even smaller package going over the wire.
-
+
{@a run-rollup}
@@ -602,8 +602,8 @@ showing exactly which application and Angular modules and classes are included i
Here's the map for _Tour of Heroes_.
-
+
diff --git a/aio/content/guide/architecture.md b/aio/content/guide/architecture.md
index 2f8c5613c1..73a92d3f20 100644
--- a/aio/content/guide/architecture.md
+++ b/aio/content/guide/architecture.md
@@ -27,7 +27,7 @@ You'll learn the details in the pages that follow. For now, focus on the big pic
@@ -64,23 +64,23 @@ Learn these building blocks, and you're on your way.
## Modules
Angular apps are modular and Angular has its own modularity system called _Angular modules_ or _NgModules_.
-_Angular modules_ are a big deal.
+_Angular modules_ are a big deal.
This page introduces modules; the [Angular modules](guide/ngmodule) page covers them in depth.
-Every Angular app has at least one Angular module class, [the _root module_](guide/appmodule "AppModule: the root module"),
+Every Angular app has at least one Angular module class, [the _root module_](guide/appmodule "AppModule: the root module"),
conventionally named `AppModule`.
-While the _root module_ may be the only module in a small application, most apps have many more
+While the _root module_ may be the only module in a small application, most apps have many more
_feature modules_, each a cohesive block of code dedicated to an application domain,
-a workflow, or a closely related set of capabilities.
+a workflow, or a closely related set of capabilities.
An Angular module, whether a _root_ or _feature_, is a class with an `@NgModule` decorator.
@@ -98,7 +98,7 @@ Learn more about decorators on the web.
-`NgModule` is a decorator function that takes a single metadata object whose properties describe the module.
+`NgModule` is a decorator function that takes a single metadata object whose properties describe the module.
The most important properties are:
* `declarations` - the _view classes_ that belong to this module.
Angular has three kinds of view classes: [components](guide/architecture#components), [directives](guide/architecture#directives), and [pipes](guide/pipes).
@@ -110,7 +110,7 @@ Angular has three kinds of view classes: [components](guide/architecture#compone
* `providers` - creators of [services](guide/architecture#services) that this module contributes to
the global collection of services; they become accessible in all parts of the app.
-* `bootstrap` - the main application view, called the _root component_,
+* `bootstrap` - the main application view, called the _root component_,
that hosts all other app views. Only the _root module_ should set this `bootstrap` property.
Here's a simple root module:
@@ -125,15 +125,15 @@ Here's a simple root module:
-The `export` of `AppComponent` is just to show how to export; it isn't actually necessary in this example. A root module has no reason to _export_ anything because other components don't need to _import_ the root module.
+The `export` of `AppComponent` is just to show how to export; it isn't actually necessary in this example. A root module has no reason to _export_ anything because other components don't need to _import_ the root module.
-Launch an application by _bootstrapping_ its root module.
+Launch an application by _bootstrapping_ its root module.
During development you're likely to bootstrap the `AppModule` in a `main.ts` file like this one.
-
+
@@ -149,7 +149,7 @@ JavaScript also has its own module system for managing collections of JavaScript
It's completely different and unrelated to the Angular module system.
In JavaScript each _file_ is a module and all objects defined in the file belong to that module.
-The module declares some objects to be public by marking them with the `export` key word.
+The module declares some objects to be public by marking them with the `export` key word.
Other JavaScript modules use *import statements* to access public objects from other modules.
@@ -182,12 +182,12 @@ These are two different and _complementary_ module systems. Use them both to wri
-Angular ships as a collection of JavaScript modules. You can think of them as library modules.
+Angular ships as a collection of JavaScript modules. You can think of them as library modules.
Each Angular library name begins with the `@angular` prefix.
@@ -244,7 +244,7 @@ Learn more from the [Angular modules](guide/ngmodule) page.
@@ -284,7 +284,7 @@ Your app can take action at each moment in this lifecycle through optional [life
## Templates
@@ -314,7 +314,7 @@ The `HeroDetailComponent` is a **child** of the `HeroListComponent`.
@@ -330,7 +330,7 @@ Notice how `` rests comfortably among native HTML elements. Custom
## Metadata
@@ -375,11 +375,11 @@ Angular inserts an instance of the `HeroListComponent` view between those tags.
* `providers`: array of **dependency injection providers** for services that the component requires.
This is one way to tell Angular that the component's constructor requires a `HeroService`
-so it can get the list of heroes to display.
+so it can get the list of heroes to display.
@@ -406,7 +406,7 @@ into actions and value updates. Writing such push/pull logic by hand is tedious,
read as any experienced jQuery programmer can attest.
@@ -454,7 +454,7 @@ from the root of the application component tree through all child components.
@@ -463,7 +463,7 @@ Data binding plays an important role in communication
between a template and its component.
@@ -478,7 +478,7 @@ Data binding is also important for communication between parent and child compon
## Directives
@@ -556,7 +556,7 @@ Of course, you can also write your own directives. Components such as
## Services
@@ -624,7 +624,7 @@ application logic into services and make those services available to components
## Dependency injection
@@ -656,7 +656,7 @@ This is *dependency injection*.
The process of `HeroService` injection looks a bit like this:
diff --git a/aio/content/guide/attribute-directives.md b/aio/content/guide/attribute-directives.md
index 57fc788f14..b353d05d0a 100644
--- a/aio/content/guide/attribute-directives.md
+++ b/aio/content/guide/attribute-directives.md
@@ -39,7 +39,7 @@ Two examples are [NgFor](guide/template-syntax#ngFor) and [NgIf](guide/template-
Learn about them in the [Structural Directives](guide/structural-directives) guide.
*Attribute directives* are used as attributes of elements.
-The built-in [NgStyle](guide/template-syntax#ngStyle) directive in the
+The built-in [NgStyle](guide/template-syntax#ngStyle) directive in the
[Template Syntax](guide/template-syntax) guide, for example,
can change several element styles at the same time.
@@ -108,7 +108,7 @@ they don't conflict with standard HTML attributes.
This also reduces the risk of colliding with third-party directive names.
Make sure you do **not** prefix the `highlight` directive name with **`ng`** because
-that prefix is reserved for Angular and using it could cause bugs that are difficult to diagnose.
+that prefix is reserved for Angular and using it could cause bugs that are difficult to diagnose.
For a simple demo, the short prefix, `my`, helps distinguish your custom directive.
@@ -116,7 +116,7 @@ For a simple demo, the short prefix, `my`, helps distinguish your custom directi
-After the `@Directive` metadata comes the directive's controller class,
+After the `@Directive` metadata comes the directive's controller class,
called `HighlightDirective`, which contains the logic for the directive.
Exporting `HighlightDirective` makes it accessible to other components.
@@ -168,7 +168,7 @@ Now when the app runs, the `myHighlight` directive highlights the paragraph text
@@ -179,7 +179,7 @@ Now when the app runs, the `myHighlight` directive highlights the paragraph text
### Your directive isn't working?
-Did you remember to add the directive to the `declarations` attribute of `@NgModule`?
+Did you remember to add the directive to the `declarations` attribute of `@NgModule`?
It is easy to forget!
Open the console in the browser tools and look for an error like this:
@@ -236,7 +236,7 @@ each adorned by the `HostListener` decorator.
-The `@HostListener` decorator lets you subscribe to events of the DOM
+The `@HostListener` decorator lets you subscribe to events of the DOM
element that hosts an attribute directive, the `
` in this case.
@@ -280,7 +280,7 @@ the mouse hovers over the `p` and disappears as it moves out.
@@ -438,7 +438,7 @@ Here are the harness and directive in action.
@@ -491,7 +491,7 @@ Here's how the harness should work when you're done coding.
@@ -607,4 +607,4 @@ Now apply that reasoning to the following example:
* The `myHighlight` property on the left refers to an _aliased_ property of the `HighlightDirective`,
not a property of the template's component. There are trust issues.
- Therefore, the directive property must carry the `@Input` decorator.
\ No newline at end of file
+ Therefore, the directive property must carry the `@Input` decorator.
diff --git a/aio/content/guide/cli-quickstart.md b/aio/content/guide/cli-quickstart.md
index f593e34892..fe1581581b 100644
--- a/aio/content/guide/cli-quickstart.md
+++ b/aio/content/guide/cli-quickstart.md
@@ -123,7 +123,7 @@ Your app greets you with a message:
@@ -161,7 +161,7 @@ Open `src/app/app.component.css` and give the component some style.
diff --git a/aio/content/guide/component-communication.md b/aio/content/guide/component-communication.md
index 68a6d70847..2cee231bc3 100644
--- a/aio/content/guide/component-communication.md
+++ b/aio/content/guide/component-communication.md
@@ -54,7 +54,7 @@ The running application displays three heroes:
@@ -98,7 +98,7 @@ Here's the `NameParentComponent` demonstrating name variations including a name
@@ -156,7 +156,7 @@ Here's the output of a button-pushing sequence:
@@ -210,7 +210,7 @@ and the method processes it:
@@ -272,7 +272,7 @@ Here we see the parent and child working together.
@@ -309,7 +309,7 @@ must read or write child component values or must call child component methods.
When the parent component *class* requires that kind of access,
***inject*** the child component into the parent as a *ViewChild*.
-The following example illustrates this technique with the same
+The following example illustrates this technique with the same
[Countdown Timer](guide/component-communication#countdown-timer-example) example.
Neither its appearance nor its behavior will change.
The child [CountdownTimerComponent](guide/component-communication#countdown-timer-example) is the same as well.
@@ -424,7 +424,7 @@ facilitated by the service:
@@ -441,4 +441,4 @@ and verify that the history meets expectations:
-[Back to top](guide/component-communication#top)
\ No newline at end of file
+[Back to top](guide/component-communication#top)
diff --git a/aio/content/guide/dependency-injection-in-action.md b/aio/content/guide/dependency-injection-in-action.md
index f5c3608390..5768883ae2 100644
--- a/aio/content/guide/dependency-injection-in-action.md
+++ b/aio/content/guide/dependency-injection-in-action.md
@@ -171,7 +171,7 @@ Once all the dependencies are in place, the `AppComponent` displays the user inf
@@ -337,7 +337,7 @@ Find this example in live co
and confirm that the three `HeroBioComponent` instances have their own cached hero data.
@@ -403,7 +403,7 @@ placing it in the `` slot of the `HeroBioComponent` template:
It looks like this, with the hero's telephone number from `HeroContactComponent` projected above the hero description:
@@ -440,7 +440,7 @@ Thanks to `@Optional()`, Angular sets the `loggerService` to null and the rest o
Here's the `HeroBiosAndContactsComponent` in action.
@@ -450,7 +450,7 @@ until it finds the logger at the `AppComponent` level. The logger logic kicks in
with the gratuitous "!!!", indicating that the logger was found.
@@ -495,7 +495,7 @@ first without a value (yielding the default color) and then with an assigned col
The following image shows the effect of mousing over the `` tag.
{@a providers}
@@ -570,10 +570,10 @@ But not every dependency can be satisfied by creating a new instance of a class.
You need other ways to deliver dependency values and that means you need other ways to specify a provider.
The `HeroOfTheMonthComponent` example demonstrates many of the alternatives and why you need them.
-It's visually simple: a few properties and the logs produced by a logger.
+It's visually simple: a few properties and the logs produced by a logger.
@@ -595,7 +595,7 @@ The code behind it gives you plenty to think about.
The `provide` object literal takes a *token* and a *definition object*.
The *token* is usually a class but [it doesn't have to be](guide/dependency-injection-in-action#tokens).
-The *definition* object has a required property that specifies how to create the singleton instance of the service. In this case, the property.
+The *definition* object has a required property that specifies how to create the singleton instance of the service. In this case, the property.
@@ -728,7 +728,7 @@ Now put it to use in a simplified version of the `HeroOfTheMonthComponent`.
The `HeroOfTheMonthComponent` constructor's `logger` parameter is typed as `MinimalLogger` so only the `logs` and `logInfo` members are visible in a TypeScript-aware editor:
@@ -743,7 +743,7 @@ Behind the scenes, Angular actually sets the `logger` parameter to the full serv
The following image, which displays the logging date, confirms the point:
@@ -849,7 +849,7 @@ But *no class* in this application inherits from `MinimalLogger`.
The `LoggerService` and the `DateLoggerService` _could_ have inherited from `MinimalLogger`.
They could have _implemented_ it instead in the manner of an interface.
-But they did neither.
+But they did neither.
The `MinimalLogger` is used exclusively as a dependency injection token.
When you use a class this way, it's called a ***class-interface***.
@@ -941,7 +941,7 @@ to display a *sorted* list of heroes.
@@ -1003,8 +1003,8 @@ These complications argue for *avoiding component inheritance*.
## Find a parent component by injection
Application components often need to share information.
-More loosely coupled techniques such as data binding and service sharing
-are preferable. But sometimes it makes sense for one component
+More loosely coupled techniques such as data binding and service sharing
+are preferable. But sometimes it makes sense for one component
to have a direct reference to another component
perhaps to access values or call methods on that component.
@@ -1013,7 +1013,7 @@ Although an Angular application is a tree of components,
there is no public API for inspecting and traversing that tree.
There is an API for acquiring a child reference.
-Check out `Query`, `QueryList`, `ViewChildren`, and `ContentChildren`
+Check out `Query`, `QueryList`, `ViewChildren`, and `ContentChildren`
in the [API Reference](api/).
There is no public API for acquiring a parent reference.
@@ -1050,7 +1050,7 @@ after injecting an `AlexComponent` into her constructor:
-Notice that even though the [@Optional](guide/dependency-injection-in-action#optional) qualifier
+Notice that even though the [@Optional](guide/dependency-injection-in-action#optional) qualifier
is there for safety,
the
confirms that the `alex` parameter is set.
@@ -1078,8 +1078,8 @@ whose API your `NewsComponent` understands.
Looking for components that implement an interface would be better.
-That's not possible because TypeScript interfaces disappear
-from the transpiled JavaScript, which doesn't support interfaces.
+That's not possible because TypeScript interfaces disappear
+from the transpiled JavaScript, which doesn't support interfaces.
There's no artifact to look for.
@@ -1087,7 +1087,7 @@ There's no artifact to look for.
This isn't necessarily good design.
-This example is examining *whether a component can
+This example is examining *whether a component can
inject its parent via the parent's base class*.
The sample's `CraigComponent` explores this question. [Looking back](guide/dependency-injection-in-action#alex),
@@ -1126,7 +1126,7 @@ The parent must cooperate by providing an *alias* to itself in the name of a *cl
Recall that Angular always adds a component instance to its own injector;
that's why you could inject *Alex* into *Cathy* [earlier](guide/dependency-injection-in-action#known-parent).
-Write an [*alias provider*](guide/dependency-injection-in-action#useexisting)—a `provide` object literal with a `useExisting`
+Write an [*alias provider*](guide/dependency-injection-in-action#useexisting)—a `provide` object literal with a `useExisting`
definition—that creates an *alternative* way to inject the same component instance
and add that provider to the `providers` array of the `@Component` metadata for the `AlexComponent`:
@@ -1142,7 +1142,7 @@ and add that provider to the `providers` array of the `@Component` metadata for
[Parent](guide/dependency-injection-in-action#parent-token) is the provider's *class-interface* token.
The [*forwardRef*](guide/dependency-injection-in-action#forwardref) breaks the circular reference you just created by having the `AlexComponent` refer to itself.
-*Carol*, the third of *Alex*'s child components, injects the parent into its `parent` parameter,
+*Carol*, the third of *Alex*'s child components, injects the parent into its `parent` parameter,
the same way you've done it before:
@@ -1154,7 +1154,7 @@ the same way you've done it before:
Here's *Alex* and family in action:
@@ -1215,7 +1215,7 @@ Here's *Alice*, *Barry* and family in action:
diff --git a/aio/content/guide/displaying-data.md b/aio/content/guide/displaying-data.md
index 2f48103595..d28bcdce89 100644
--- a/aio/content/guide/displaying-data.md
+++ b/aio/content/guide/displaying-data.md
@@ -18,7 +18,7 @@ The final UI looks like this:
@@ -126,7 +126,7 @@ inside the `` tag.
Now run the app. It should display the title and hero name:
@@ -233,7 +233,7 @@ Now the heroes appear in an unordered list.
diff --git a/aio/content/guide/dynamic-component-loader.md b/aio/content/guide/dynamic-component-loader.md
index d150eba494..ff7c34cb5b 100644
--- a/aio/content/guide/dynamic-component-loader.md
+++ b/aio/content/guide/dynamic-component-loader.md
@@ -102,8 +102,8 @@ because it doesn't render any additional output.
Take a closer look at the methods in `ad-banner.component.ts`.
`AdBannerComponent` takes an array of `AdItem` objects as input,
-which ultimately comes from `AdService`. `AdItem` objects specify
-the type of component to load and any data to bind to the
+which ultimately comes from `AdService`. `AdItem` objects specify
+the type of component to load and any data to bind to the
component.`AdService` returns the actual ads making up the ad campaign.
Passing an array of components to `AdBannerComponent` allows for a
@@ -141,17 +141,17 @@ value to select an `adItem` from the array.
-After `loadComponent()` selects an ad, it uses `ComponentFactoryResolver`
-to resolve a `ComponentFactory` for each specific component.
+After `loadComponent()` selects an ad, it uses `ComponentFactoryResolver`
+to resolve a `ComponentFactory` for each specific component.
The `ComponentFactory` then creates an instance of each component.
-Next, you're targeting the `viewContainerRef` that
-exists on this specific instance of the component. How do you know it's
-this specific instance? Because it's referring to `adHost` and `adHost` is the
+Next, you're targeting the `viewContainerRef` that
+exists on this specific instance of the component. How do you know it's
+this specific instance? Because it's referring to `adHost` and `adHost` is the
directive you set up earlier to tell Angular where to insert dynamic components.
-As you may recall, `AdDirective` injects `ViewContainerRef` into its constructor.
-This is how the directive accesses the element that you want to use to host the dynamic component.
+As you may recall, `AdDirective` injects `ViewContainerRef` into its constructor.
+This is how the directive accesses the element that you want to use to host the dynamic component.
To add the component to the template, you call `createComponent()` on `ViewContainerRef`.
@@ -214,9 +214,9 @@ Here are two sample components and the `AdComponent` interface for reference:
The final ad banner looks like this:
-See the .
\ No newline at end of file
+See the .
diff --git a/aio/content/guide/dynamic-form.md b/aio/content/guide/dynamic-form.md
index 39208799f5..ef446e6e92 100644
--- a/aio/content/guide/dynamic-form.md
+++ b/aio/content/guide/dynamic-form.md
@@ -7,20 +7,20 @@ Render dynamic forms with FormGroup.
@description
-Building handcrafted forms can be costly and time-consuming,
+Building handcrafted forms can be costly and time-consuming,
especially if you need a great number of them, they're similar to each other, and they change frequently
to meet rapidly changing business and regulatory requirements.
-It may be more economical to create the forms dynamically, based on
+It may be more economical to create the forms dynamically, based on
metadata that describes the business object model.
-This cookbook shows you how to use `formGroup` to dynamically
+This cookbook shows you how to use `formGroup` to dynamically
render a simple form with different control types and validation.
It's a primitive start.
It might evolve to support a much richer variety of questions, more graceful rendering, and superior user experience.
All such greatness has humble beginnings.
-The example in this cookbook is a dynamic form to build an
+The example in this cookbook is a dynamic form to build an
online application experience for heroes seeking employment.
The agency is constantly tinkering with the application process.
You can create the forms on the fly *without changing the application code*.
@@ -44,8 +44,8 @@ Start by creating an `NgModule` called `AppModule`.
This cookbook uses [reactive forms](guide/reactive-forms).
-Reactive forms belongs to a different `NgModule` called `ReactiveFormsModule`,
-so in order to access any reactive forms directives, you have to import
+Reactive forms belongs to a different `NgModule` called `ReactiveFormsModule`,
+so in order to access any reactive forms directives, you have to import
`ReactiveFormsModule` from the `@angular/forms` library.
Bootstrap the `AppModule` in `main.ts`.
@@ -81,12 +81,12 @@ The following `QuestionBase` is a fundamental question class.
-From this base you can derive two new classes in `TextboxQuestion` and `DropdownQuestion`
+From this base you can derive two new classes in `TextboxQuestion` and `DropdownQuestion`
that represent textbox and dropdown questions.
-The idea is that the form will be bound to specific question types and render the
+The idea is that the form will be bound to specific question types and render the
appropriate controls dynamically.
-`TextboxQuestion` supports multiple HTML5 types such as text, email, and url
+`TextboxQuestion` supports multiple HTML5 types such as text, email, and url
via the `type` property.
@@ -106,7 +106,7 @@ via the `type` property.
Next is `QuestionControlService`, a simple service for transforming the questions to a `FormGroup`.
-In a nutshell, the form group consumes the metadata from the question model and
+In a nutshell, the form group consumes the metadata from the question model and
allows you to specify default values and validation rules.
@@ -117,7 +117,7 @@ allows you to specify default values and validation rules.
{@a form-component}
## Question form components
-Now that you have defined the complete model you are ready
+Now that you have defined the complete model you are ready
to create components to represent the dynamic form.
@@ -139,7 +139,7 @@ to create components to represent the dynamic form.
It presents a list of questions, each bound to a `` component element.
The `` tag matches the `DynamicFormQuestionComponent`,
-the component responsible for rendering the details of each _individual_
+the component responsible for rendering the details of each _individual_
question based on values in the data-bound question object.
@@ -164,8 +164,8 @@ The `ngSwitch` determines which type of question to display.
In both components you're relying on Angular's **formGroup** to connect the template HTML to the
underlying control objects, populated from the question model with display and validation rules.
-`formControlName` and `formGroup` are directives defined in
-`ReactiveFormsModule`. The templates can access these directives
+`formControlName` and `formGroup` are directives defined in
+`ReactiveFormsModule`. The templates can access these directives
directly since you imported `ReactiveFormsModule` from `AppModule`.
{@a questionnaire-data}
@@ -176,9 +176,9 @@ directly since you imported `ReactiveFormsModule` from `AppModule`.
The set of questions you've defined for the job application is returned from the `QuestionService`.
In a real app you'd retrieve these questions from storage.
- The key point is that you control the hero job application questions
+ The key point is that you control the hero job application questions
entirely through the objects returned from `QuestionService`.
- Questionnaire maintenance is a simple matter of adding, updating,
+ Questionnaire maintenance is a simple matter of adding, updating,
and removing objects from the `questions` array.
@@ -198,7 +198,7 @@ Finally, display an instance of the form in the `AppComponent` shell.
{@a dynamic-template}
## Dynamic Template
-Although in this example you're modelling a job application for heroes, there are
+Although in this example you're modelling a job application for heroes, there are
no references to any specific hero question
outside the objects returned by `QuestionService`.
@@ -217,9 +217,9 @@ Saving and retrieving the data is an exercise for another time.
The final form looks like this:
-[Back to top](guide/dynamic-form#top)
\ No newline at end of file
+[Back to top](guide/dynamic-form#top)
diff --git a/aio/content/guide/forms.md b/aio/content/guide/forms.md
index cacde156a3..fd8889451a 100644
--- a/aio/content/guide/forms.md
+++ b/aio/content/guide/forms.md
@@ -41,7 +41,7 @@ the form-specific directives and techniques described in this page.
-You can also use a reactive (or model-driven) approach to build forms.
+You can also use a reactive (or model-driven) approach to build forms.
However, this page focuses on template-driven forms.
@@ -60,7 +60,7 @@ You'll learn to build a template-driven form that looks like this:
@@ -74,7 +74,7 @@ If you delete the hero name, the form displays a validation error in an attentio
@@ -148,7 +148,7 @@ You can create a new hero like this:
## Create a form component
-An Angular form has two parts: an HTML-based _template_ and a component _class_
+An Angular form has two parts: an HTML-based _template_ and a component _class_
to handle data and user interactions programmatically.
Begin with the class because it states, in brief, what the hero editor can do.
@@ -301,7 +301,7 @@ You added a *Submit* button at the bottom with some classes on it for styling.
-In template driven forms, if you've imported `FormsModule`, you don't have to do anything
+In template driven forms, if you've imported `FormsModule`, you don't have to do anything
to the `