组件类和模板共同构成了应用数据的一个视图。
数据绑定:页面上把数据的值及其表现形式组合起来的过程。
经过指令向模板中添加逻辑,指令告诉Angular在渲染页面时要如何修改。
本文问题:模板语法的工做方式?html
显示组件属性最简单的方式:插值绑定属性名。{{myHello}}数组
import { Component } from '@angular/core';
@Component({
selector: 'app-root', // 指定当前组件的Css选择器,对应<app-root>元素,该元素是inde.html文件里的一个占位符。
template: `
<h1>{{title}}</h1>
<h2>My favorite hero is: {{myHero}}</h2>
`
})
export class AppComponent {
title = 'Tour of Heroes';
myHero = 'Windstorm'
}
复制代码
Angular 自动从组件中提取 title和myHero 属性的值,并将其插入浏览器中。当这些属性发生变化时,Angular就会自动刷新显示。浏览器
模板是包在 ECMAScript 2015 反引号 ( ` ) 中的一个多行字符串。 反引号 ( ` ) — 注意,不是单引号 (') — 容许把一个字符串写在多行上, 使 HTML 模板更容易阅读。bash
@Component()元数据告诉Angular要到哪里去找该组件的模板。有两种方式存放组件模板:app
使用变量赋值对组件进行初始化;或使用构造函数。函数
export class AppComponent {
title = 'Tour of Heroes'; //变量赋值方式
myHero = 'WebStrom';
constructor(){
this.title = 'New Title'; // 构造函数方式
this.myHero = 'NewHero';
}
}
复制代码
*ngFor 指令循环遍历数据性能
<ul>
// hero 是一个 模板输入变量
<li *ngFor="let hero of heros">
{{hero}}
</li>
</ul>
复制代码
组件内部直接定义数据,不是最佳实践;应当将数据封装到对象中(面向对象思惟)
建立一个类 ng generate class hero
测试
export class Hero { // 自动将类名首字母大写了
// 构造函数中的参数,默认添加了 private id: number 和 this.number = number;
// 这种方式利用了TypeScript 提供的简写形式----用构造函数的参数直接定义属性。
constructor( // 手动添加构造函数
public id: number, // 声明id类型为 数字类型
public name: string) // 声明name 为字符类型
{ }
}
复制代码
Angular 的ngIf 指令会根据一个布尔条件来显示或移除一个元素 <p *ngIf="heroes.length > 3">There are many heroes!</p>
Angular 不是在显示和隐藏这条消息,它是从DOM 中添加和移除这个段落元素。这会提升性能,特别是在一些大的项目中有条件的包含或排除一大堆带着不少数据绑定的HTML时。ui
解答:模板语法的工做方式?this
要点: