Angular 2 - Interpolation and the expression context
Angular allows us to mark up our template
code to get more use out of it. Angular has a template syntax that it
supports, which is made up of interpolation, binding,
expressions, conditional templating, template variables, and template
expression operators.
Interpolation is a way to get data displayed in
the view. Let's head over to the media-item.component.html
file and check out interpolation in action. You do interpolation by
using a pair of matching curly braces in the markup. And the contents
of the double curly braces is a JavaScript-like expression that
Angular will evaluate and then convert to a string. So we can add a pair
of curly braces in the H tag for the media item name and put an
expression.
But not all expressions are supported. Assignments,
newing up variables, expressions that are chained, and incrementers and
decrementers are not valid template expressions. The most common use
of interpolation is to display some data from a property we have set
on the component class. If we switch over to the media-item.component.ts file and add a class property named
"name" and assign it
a string value of "the redemption" we
can then flip back over to the template file and put "name" in our curly braces in
place of the text expression.
In media-item.component.html :
<h2>{{
name }}</h2>
<div>{{
wasWatched() }}</div>
<div>Action</div>
<div>2019</div>
<div class="tools">
</div>
In media-item.component.ts :
import { Component } from
'@angular/core';
@Component({
selector: 'mw-media-item',
templateUrl: 'app/media-item.component.html',
styleUrls: ['app/media-item.component.css']
})
export class MediaItemComponent {
name = 'The Redemption';
wasWatched() {
return true;
}
}
Notice that we use the property
"name" directly in the interpolation statement without any
this.reference or some other component instance reference.
Angular
makes all properties on the component class available to the template when it
processes it. So back in the browser, we can see that the name text gets
rendered in the H tag. This component property is made available via
what is known as the expression context. Methods on the component class
are also available in the expression context. So in the media-item.component.ts file, we
can add a method named "was watched" to our component class. And
we can have it return true. And then over in the template markup, we can
replace the static "watched on date" text with a pair of curly
braces and a called with a method. And then over in the browser, we can
see true is rendered.