diff --git a/aio/content/examples/interpolation/src/app/app.component.ts b/aio/content/examples/interpolation/src/app/app.component.ts
index 1fffef735a..686581e096 100644
--- a/aio/content/examples/interpolation/src/app/app.component.ts
+++ b/aio/content/examples/interpolation/src/app/app.component.ts
@@ -9,8 +9,10 @@ import { CUSTOMERS } from './customers';
})
export class AppComponent {
customers = CUSTOMERS;
-
+ // #docregion customer
currentCustomer = 'Maria';
+ // #enddocregion customer
+
title = 'Featured product:';
itemImageUrl = '../assets/potted-plant.png';
diff --git a/aio/content/guide/interpolation.md b/aio/content/guide/interpolation.md
index 524cc42f90..42919ff06d 100644
--- a/aio/content/guide/interpolation.md
+++ b/aio/content/guide/interpolation.md
@@ -1,80 +1,73 @@
-# Interpolation and template expressions
+# Text interpolation
-Interpolation allows you to incorporate calculated strings into the text
-between HTML element tags and within attribute assignments. Template
-expressions are what you use to calculate those strings.
+Text interpolation allows you to incorporate dynamic string values into your HTML templates.
+With interpolation, you can dynamically change what appears in an application view, such as displaying a custom greeting that includes the user's name.
-See the for all of
-the syntax and code snippets in this guide.
+See the for all of the syntax and code snippets in this guide.
-## Interpolation `{{...}}`
+## Displaying values with interpolation
Interpolation refers to embedding expressions into marked up text.
-By default, interpolation uses as its delimiter the double curly braces, `{{` and `}}`.
+By default, interpolation uses the double curly braces `{{` and `}}` as delimiters.
-In the following snippet, `{{ currentCustomer }}` is an example of interpolation.
+To illustrate how interpolation works, consider an Angular component that contains a `currentCustomer` variable:
+
+
+
+You can use interpolation to display the value of this variable in the corresponding component template:
-The text between the braces is often the name of a component
-property. Angular replaces that name with the
-string value of the corresponding component property.
+Angular replaces `currentCustomer` with the string value of the corresponding component property.
+In this case, the value is `Maria`.
+
+In the following example, Angular evaluates the `title` and `itemImageUrl` properties to display some title text and an image.
-In the example above, Angular evaluates the `title` and `itemImageUrl` properties
-and fills in the blanks, first displaying some title text and then an image.
+## Template expressions
-More generally, the text between the braces is a **template expression**
-that Angular first **evaluates** and then **converts to a string**.
+A template **expression** produces a value and appears within double curly braces, `{{ }}`.
+Angular resolves the expression and assigns it to a property of a binding target.
+The target could be an HTML element, a component, or a directive.
+
+### Resolving expressions with interpolation
+
+More generally, the text between the braces is a template expression that Angular first evaluates and then converts to a string.
The following interpolation illustrates the point by adding two numbers:
-The expression can invoke methods of the host component such as `getVal()` in
-the following example:
+Expressions can also invoke methods of the host component such as `getVal()` in the following example:
-Angular evaluates all expressions in double curly braces,
-converts the expression results to strings, and links them with neighboring literal strings. Finally,
-it assigns this composite interpolated result to an **element or directive property**.
+With interpolation, Angular performs the following tasks:
-You appear to be inserting the result between element tags and assigning it to attributes.
-However, interpolation is a special syntax that Angular converts into a *property binding*.
+1. Evaluates all expressions in double curly braces.
+1. Converts the expression results to strings.
+1. Links the results to any adjacent literal strings.
+1. Assigns the composite to an element or directive property.
-If you'd like to use something other than `{{` and `}}`, you can
-configure the interpolation delimiter via the
-[interpolation](api/core/Component#interpolation)
-option in the `Component` metadata.
+You can configure the interpolation delimiter with the [interpolation](api/core/Component#interpolation) option in the `@Component()` metadata.
-## Template expressions
+### Syntax
-A template **expression** produces a value and appears within the double
-curly braces, `{{ }}`.
-Angular executes the expression and assigns it to a property of a binding target;
-the target could be an HTML element, a component, or a directive.
+Template expressions are similar to JavaScript.
+Many JavaScript expressions are legal template expressions, with the following exceptions.
-The interpolation braces in `{{1 + 1}}` surround the template expression `1 + 1`.
-In the property binding,
-a template expression appears in quotes to the right of the `=` symbol as in `[property]="expression"`.
-
-In terms of syntax, template expressions are similar to JavaScript.
-Many JavaScript expressions are legal template expressions, with a few exceptions.
-
-You can't use JavaScript expressions that have or promote side effects,
-including:
+You can't use JavaScript expressions that have or promote side effects, including:
* Assignments (`=`, `+=`, `-=`, `...`)
-* Operators such as `new`, `typeof`, `instanceof`, etc.
+* Operators such as `new`, `typeof`, or `instanceof`
* Chaining expressions with ;
or ,
* The increment and decrement operators `++` and `--`
* Some of the ES2015+ operators
@@ -84,92 +77,84 @@ Other notable differences from JavaScript syntax include:
* No support for the bitwise operators such as `|` and `&`
* New [template expression operators](guide/template-expression-operators), such as `|`, `?.` and `!`
-
## Expression context
-The *expression context* is typically the _component_ instance.
-In the following snippets, the `recommended` within double curly braces and the
-`itemImageUrl2` in quotes refer to properties of the `AppComponent`.
+Interpolated expressions have a context—a particular part of the application to which the expression belongs.
+Typically, this context is the component instance.
+
+In the following snippet, the expression `recommended` and the expression `itemImageUrl2` refer to properties of the `AppComponent`.
-An expression may also refer to properties of the _template's_ context
-such as a template input variable,
-
-`let customer`, or a template reference variable, `#customerInput`.
-
+An expression can also refer to properties of the _template's_ context such as a [template input variable](guide/built-in-directives#template-input-variables) or a [template reference variable](guide/template-reference-variables).
+
+The following example uses a template input variable of `customer`.
+This next example features a template reference variable, `#customerInput`.
+
-The context for terms in an expression is a blend of the _template variables_,
-the directive's _context_ object (if it has one), and the component's _members_.
-If you reference a name that belongs to more than one of these namespaces,
-the template variable name takes precedence, followed by a name in the directive's _context_,
-and, lastly, the component's member names.
+The context against which an expression evaluates is the union of the template variables, the directive's context object—if it has one—and the component's members.
+If you reference a name that belongs to more than one of these namespaces, Angular applies the following logic to determine the context:
+
+1. The template variable name.
+1. A name in the directive's context.
+1. The component's member names.
The previous example presents such a name collision. The component has a `customer`
property and the `*ngFor` defines a `customer` template variable.
-The `customer` in `{{customer.name}}`
-refers to the template input variable, not the component's property.
+The `customer` in `{{customer.name}}` refers to the template input variable, not the component's property.
-Template expressions cannot refer to anything in
-the global namespace, except `undefined`. They can't refer to
-`window` or `document`. Additionally, they
-can't call `console.log()` or `Math.max()` and they are restricted to referencing
-members of the expression context.
+Template expressions cannot refer to anything in the global namespace, except `undefined`.
+They can't refer to `window` or `document`.
+Additionally, they can't call `console.log()` or `Math.max()` and they are restricted to referencing members of the expression context.
-## Expression guidelines
+## Expression best practices
-When using template expressions follow these guidelines:
+When using template expressions, follow these best practices:
-* [Simplicity](guide/interpolation#simplicity)
-* [Quick execution](guide/interpolation#quick-execution)
-* [No visible side effects](guide/interpolation#no-visible-side-effects)
+* **Use short expressions**
-### Simplicity
+ Use property names or method calls whenever possible.
+ Keep application and business logic in the component, where it is easier to develop and test.
-Although it's possible to write complex template expressions, it's a better
-practice to avoid them.
+* **Quick execution**
-A property name or method call should be the norm, but an occasional Boolean negation, `!`, is OK.
-Otherwise, confine application and business logic to the component,
-where it is easier to develop and test.
+ Angular executes template expressions after every [change detection](guide/glossary#change-detection) cycle.
+ Many asynchronous activities trigger change detection cycles, such as promise resolutions, HTTP results, timer events, key presses and mouse moves.
-### Quick execution
+ Expressions should finish quickly to keep the user experience as efficient as possible, especially on slower devices.
+ Consider caching values when their computation requires greater resources.
-Angular executes template expressions after every change detection cycle.
-Change detection cycles are triggered by many asynchronous activities such as
-promise resolutions, HTTP results, timer events, key presses and mouse moves.
+* **No visible side effects**
-Expressions should finish quickly or the user experience may drag, especially on slower devices.
-Consider caching values when their computation is expensive.
+ According to Angular's [unidirectional data flow model](guide/glossary#unidirectional-data-flow), a template expression should not change any application state other than the value of the target property.
+ Reading a component value should not change some other displayed value.
+ The view should be stable throughout a single rendering pass.
-### No visible side effects
+
+ Idempotent expressions reduce side effects
-A template expression should not change any application state other than the value of the
-target property.
+ An [idempotent](https://en.wikipedia.org/wiki/Idempotence) expression is free of side effects and improves Angular's change detection performance.
+ In Angular terms, an idempotent expression always returns *exactly the same thing* until one of its dependent values changes.
-This rule is essential to Angular's "unidirectional data flow" policy.
-You should never worry that reading a component value might change some other displayed value.
-The view should be stable throughout a single rendering pass.
+ Dependent values should not change during a single turn of the event loop.
+ If an idempotent expression returns a string or a number, it returns the same string or number if you call it twice consecutively.
+ If the expression returns an object, including an `array`, it returns the same object *reference* if you call it twice consecutively.
-An [idempotent](https://en.wikipedia.org/wiki/Idempotence) expression is ideal because
-it is free of side effects and improves Angular's change detection performance.
-In Angular terms, an idempotent expression always returns
-*exactly the same thing* until one of its dependent values changes.
+
-Dependent values should not change during a single turn of the event loop.
-If an idempotent expression returns a string or a number, it returns the same string or number when called twice in a row. If the expression returns an object, including an `array`, it returns the same object *reference* when called twice in a row.
+
-
+ There is one exception to this behavior that applies to `*ngFor`.
+ `*ngFor` has `trackBy` functionality that can deal with changing values in objects when iterating over them.
+ See [*ngFor with `trackBy`](guide/built-in-directives#ngfor-with-trackby) for details.
-There is one exception to this behavior that applies to `*ngFor`. `*ngFor` has `trackBy` functionality that can deal with referential inequality of objects when iterating over them. See [*ngFor with `trackBy`](guide/built-in-directives#ngfor-with-trackby) for details.
-
-
+
diff --git a/aio/content/navigation.json b/aio/content/navigation.json
index 951e7bca3b..7b24e4cc8c 100644
--- a/aio/content/navigation.json
+++ b/aio/content/navigation.json
@@ -154,7 +154,7 @@
},
{
"url": "guide/interpolation",
- "title": "Interpolation",
+ "title": "Text interpolation",
"tooltip": "An introduction to interpolation and expressions in HTML."
},
{