2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								block includes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  include ../_util-fns
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  - var _iterableUrl = 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  - var _boolean = 'truthy/falsey';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  We typically display data in Angular by binding controls in an HTML template
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  to properties of an Angular component.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  In this chapter, we'll create a component with a list of heroes. Each hero has a name.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  We'll display the list of hero names and
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  conditionally show a message below the list.
							 
						 
					
						
							
								
									
										
										
										
											2015-12-13 12:36:37 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  The final UI looks like this:
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								figure.image-display
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  img(src="/resources/images/devguide/displaying-data/final.png" alt="Final UI")
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-03-16 13:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Table Of Contents
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-16 13:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  * [Showing component properties with interpolation](#interpolation)
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  * [Showing !{_an} !{_array} property with NgFor](#ngFor)
							 
						 
					
						
							
								
									
										
										
										
											2016-03-16 13:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  * [Conditional display with NgIf](#ngIf)
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-16 13:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								.l-sub-section
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    The <live-example></live-example> demonstrates all of the syntax and code
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    snippets described in this chapter.
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								.l-main-section#interpolation
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ## Showing component properties with interpolation
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  The easiest way to display a component property
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  is to bind the property name through interpolation.
							 
						 
					
						
							
								
									
										
										
										
											2015-12-10 21:41:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  With interpolation, we put the property name in the view template, enclosed in double curly braces: `{{myHero}}`.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-19 09:38:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Let's build a small illustrative example together.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Create a new project folder (<ngio-ex path="displaying-data"></ngio-ex>) and follow the steps in the [QuickStart](../quickstart.html).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								block quickstart-repo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  include ../_quickstart_repo
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-13 20:50:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Then modify the <ngio-ex path="app.component.ts"></ngio-ex> file by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  changing the template and the body of the component.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  When we're done, it should look like this:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								+makeExample('app/app.component.1.ts')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  We added two properties to the formerly empty component: `title` and `myHero`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Our revised template displays the two component properties using double curly brace
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  interpolation:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								+makeExcerpt('app/app.component.1.ts', 'template', '')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+ifDocsFor('ts')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  .l-sub-section
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    :marked
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      The template is a multi-line string within ECMAScript 2015 backticks (<code>\`</code>).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      The backtick (<code>\`</code>) — which is *not* the same character as a single
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      quote (`'`) — has many nice features. The feature we're exploiting here
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      is the ability to compose the string over several lines, which makes for
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      much more readable HTML.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-19 09:38:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Angular automatically pulls the value of the `title` and `myHero` properties from the component and
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  inserts those values into the browser. Angular updates the display
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  when these properties change.
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								.l-sub-section
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    More precisely, the redisplay occurs after some kind of asynchronous event related to
							 
						 
					
						
							
								
									
										
										
										
											2016-01-02 16:47:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    the view such as a keystroke, a timer completion, or an async `XHR` response.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    We don't have those in this sample.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    But then the properties aren't changing on their own either. For the moment we must operate on faith.
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Notice that we haven't called **new** to create an instance of the `AppComponent` class.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Angular is creating an instance for us. How?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Notice the CSS `selector` in the `@Component` !{_decorator} that specifies an element named `my-app`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Remember back in [QuickStart](../quickstart.html) that we added the `<my-app>` element to the body of our `index.html` file:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+makeExcerpt('index.html', 'body')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  When we bootstrap with the `AppComponent` class (in <ngio-ex path="main.ts"></ngio-ex>), Angular looks for a `<my-app>`
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  in the `index.html`, finds it, instantiates an instance of `AppComponent`, and renders it
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  inside the `<my-app>` tag.
							 
						 
					
						
							
								
									
										
										
										
											2015-12-13 12:36:37 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Try running the app. It should display the title and hero name:
							 
						 
					
						
							
								
									
										
										
										
											2015-12-10 21:41:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								figure.image-display
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  img(src="/resources/images/devguide/displaying-data/title-and-hero.png" alt="Title and Hero")
							 
						 
					
						
							
								
									
										
										
										
											2015-12-13 12:36:37 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								+ifDocsFor('ts')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Let's review some of the choices we made and consider alternatives.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ## Template inline or template file?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  We can store our component's template in one of two places.
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  We can define it *inline* using the `template` property, as we do here.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Or we can define the template in a separate HTML file and link to it in
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  the component metadata using the `@Component` !{_decorator}'s `templateUrl` property.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  The choice between inline and separate HTML is a matter of taste,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  circumstances, and organization policy.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Here we're using inline HTML because the template is small, and the demo
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  is simpler without the additional HTML file.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-15 17:29:12 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  In either style, the template data bindings have the same access to the component's properties.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								+ifDocsFor('ts')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ## Constructor or variable initialization?
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    We initialized our component properties using variable assignment.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    This is a wonderfully concise and compact technique.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Some folks prefer to declare the properties and initialize them within a constructor like this:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  +makeExcerpt('app/app-ctor.component.ts', 'class')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    That's fine too. The choice is a matter of taste and organization policy.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    We'll adopt the more terse "variable assignment" style in this chapter simply because
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    there will be less code to read.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								.l-main-section#ngFor
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ## Showing !{_an} !{_array} property with ***ngFor**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  We want to display a list of heroes. We begin by adding !{_an} !{_array} of hero names to the component and redefine `myHero` to be the first name in the !{_array}.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								+makeExcerpt('app/app.component.2.ts', 'class')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Now we use the Angular `ngFor` directive in the template to display
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  each item in the `heroes` list.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								+makeExcerpt('app/app.component.2.ts', 'template')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Our presentation is the familiar HTML unordered list with `<ul>` and `<li>` tags. Let's focus on the `<li>` tag.
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+makeExcerpt('app/app.component.2.ts ()', 'li', '')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-12-10 21:41:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  We added a somewhat mysterious `*ngFor` to the `<li>` element.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  That's the Angular "repeater" directive.
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Its presence on the `<li>` tag marks that `<li>` element (and its children) as the "repeater template".
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								.alert.is-important
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Don't forget the leading asterisk (\*) in `*ngFor`. It is an essential part of the syntax.
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 11:18:52 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Learn more about this and `ngFor` in the [Template Syntax](./template-syntax.html#ngFor) chapter.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Notice the `hero` in the `ngFor` double-quoted instruction;
							 
						 
					
						
							
								
									
										
										
										
											2016-04-30 07:01:16 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  it is an example of a [template input variable](./template-syntax.html#ngForMicrosyntax).
							 
						 
					
						
							
								
									
										
										
										
											2015-10-19 09:38:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Angular duplicates the `<li>` for each item in the list, setting the `hero` variable
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  to the item (the hero) in the current iteration. Angular uses that variable as the
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  context for the interpolation in the double curly braces.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								.l-sub-section
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    We happened to give `ngFor` !{_an} !{_array} to display.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    In fact, `ngFor` can repeat items for any [iterable](!{_iterableUrl})
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    object.
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Now the heroes appear in an unordered list.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								figure.image-display
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  img(src="/resources/images/devguide/displaying-data/hero-names-list.png" alt="After ngfor")
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								.l-main-section
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ## Creating a class for the data
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  We are defining our data directly inside our component.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  That's fine for a demo but certainly isn't a best practice. It's not even a good practice.
							 
						 
					
						
							
								
									
										
										
										
											2015-12-10 21:41:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Although we won't do anything about that in this chapter, we'll make a mental note to fix this down the road.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  At the moment, we're binding to !{_an} !{_array} of strings. We do that occasionally in real applications, but
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  most of the time we're binding to more specialized objects.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Let's turn our !{_array} of hero names into !{_an} !{_array} of `Hero` objects. For that we'll need a `Hero` class.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Create a new file in the `!{_appDir}` folder called  <ngio-ex path="hero.ts"></ngio-ex> with the following code:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+makeExcerpt('app/hero.ts')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								block hero-class
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    We've defined a class with a constructor and two properties: `id` and `name`.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    It might not look like we have properties, but we do. We're taking
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    advantage of a TypeScript shortcut in our declaration of the constructor parameters.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Consider the first parameter:
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  +makeExcerpt('app/hero.ts ()', 'id')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    That brief syntax does a lot:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * Declares a constructor parameter and its type
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * Declares a public property of the same name
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * Initializes that property with the corresponding argument when we "new" an instance of the class
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								.l-main-section
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ## Using the Hero class
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Let's make the `heroes` property in our component return !{_an} !{_array} of these `Hero` objects.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+makeExcerpt('app/app.component.3.ts', 'heroes')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  We'll have to update the template.
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  At the moment it displays the hero's `id` and `name`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Let's fix that so we display only the hero's `name` property.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+makeExcerpt('app/app.component.3.ts', 'template')
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Our display looks the same, but now we know much better what a hero really is.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								.l-main-section#ngIf
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ## Conditional display with NgIf
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Sometimes an app needs to display a view or a portion of a view only under specific circumstances.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  In our example, we'd like to display a message if we have a large number of heroes, say, more than 3.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  The Angular `ngIf` directive inserts or removes an element based on a !{_boolean} condition.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  We can see it in action by adding the following paragraph at the bottom of the template:
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								+makeExcerpt('app/app.component.ts', 'message')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								.alert.is-important
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Don't forget the leading asterisk (\*) in `*ngIf`. It is an essential part of the syntax.
							 
						 
					
						
							
								
									
										
										
										
											2016-04-30 07:01:16 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Learn more about this and `ngIf` in the [Template Syntax](./template-syntax.html#ngIf) chapter.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  The [template expression](./template-syntax.html#template-expressions) inside the double quotes
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  looks much like !{_Lang}, and it _is_ much like !{_Lang}.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  When the component's list of heroes has more than 3 items, Angular adds the paragraph to the DOM and the message appears.
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  If there are 3 or fewer items, Angular omits the paragraph, so no message appears.
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								.alert.is-helpful
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  :marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Angular isn't showing and hiding the message. It is adding and removing the paragraph element from the DOM.
							 
						 
					
						
							
								
									
										
										
										
											2016-04-30 07:01:16 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    That hardly matters here. But it would matter a great deal, from a performance perspective, if
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    we were conditionally including or excluding a big chunk of HTML with many data bindings.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Try it out. Because the !{_array} has four items, the message should appear.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Go back into <ngio-ex path="app.component.ts"></ngio-ex> and delete or comment out one of the elements from the hero !{_array}.
							 
						 
					
						
							
								
									
										
										
										
											2015-12-10 21:41:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  The browser should refresh automatically and the message should disappear.
							 
						 
					
						
							
								
									
										
										
										
											2015-12-13 12:36:37 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								.l-main-section
							 
						 
					
						
							
								
									
										
										
										
											2015-11-10 18:31:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								:marked
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ## Summary
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Now we know how to use:
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  - **Interpolation** with double curly braces to display a component property
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  - **ngFor** to display !{_an} !{_array} of items
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  - A !{_Lang} class to shape the **model data** for our component and display properties of that model
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  - **ngIf** to conditionally display a chunk of HTML based on a boolean expression
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-06 10:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Here's our final code:
							 
						 
					
						
							
								
									
										
										
										
											2015-10-23 19:05:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								block final-code
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  +makeTabs(`displaying-data/ts/app/app.component.ts,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								             displaying-data/ts/app/hero.ts,
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 17:38:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								             displaying-data/ts/app/app.module.ts,
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 14:00:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								             displaying-data/ts/app/main.ts`,
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 17:38:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								             'final,,,',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								             'app/app.component.ts, app/hero.ts, app.module.ts, main.ts')