Angular2学习笔记

jonathan
2016-11-02 / 0 评论

Angular2学习笔记

模板语法

模板是包在反引号 (`) 中的一个多行字符串。反引号 (`) ——注意,不是单引号 (') ——有很多好用的特性,比如允许多行字符串和模板字面量。

装饰器

@Component 装饰器,这个装饰器类(和我们随后将会学到的 @Directive@Pipe 一样)是 InjectableMetadata 的子类型。实际上,这个 InjectableMetadata 装饰器是把一个类标识为依赖注入器实例化的目标。

TypeScript接口

接口只是 TypeScript 的一个设计期概念。JavaScript 没有接口。在生成 JavaScript 代码时,TypeScript 的接口就消失了。在运行期,没有接口类型信息可供 Angular 查找。

HTML Attribute 与 DOM Property

Attribute 是由 HTML 定义的。Property 是由 DOM(Document Object Model) 定义的。

就算名字相同,HTML Attribute 和 DOM Property 也不是同一样东西。

组件交互

组件定义了一个 deleteRequest 属性,它是一个 EventEmitter 实例。(译注:deleteRequest 属性是导出 Output 属性,是组件与父级组件交互的主要方式之一。参见 输入和输出属性父组件监听子组件的事件。我们需要用 @Output() 来装饰它,或者把它添加到组件元数据的 outputs 数组中,它才能在父级组件可见。)

NgFor 与 trackBy

现在,把 NgForTrackBy 指令设置为那个追踪函数:

<div *ngFor="let hero of heroes; trackBy:trackByHeroes">({{hero.id}}) {{hero.fullName}}</div>

追踪函数不会排除所有 DOM 更改。如果用来判断是否同一个英雄的属性变化了,Angular 就可能不得不更新 DOM 元素。但是如果这个属性没有变化——而且大多数时候它们不会变化——Angular 就能留下这些 DOM 元素。列表界面就会更加平滑,提供更好的响应。

安全导航操作符

Angular 的安全导航操作符 (?.) 是一种流畅而便利的方式,用来保护出现在属性路径中 null 和 undefined 值。这意味着,当 currentHero 为空时,保护视图渲染器,让它免于失败。

其他重要概念

数据绑定

Angular 支持多种数据绑定形式:

  • 插值表达式:{{value}}
  • 属性绑定:[property]="value"
  • 事件绑定:(event)="handler()"
  • 双向绑定:[(ngModel)]="property"

指令

Angular 有三种类型的指令:

  • 组件:带有模板的指令
  • 结构型指令:改变 DOM 布局的指令(如 *ngIf*ngFor
  • 属性型指令:改变元素、组件或其他指令的外观和行为的指令(如 ngClassngStyle

服务与依赖注入

Angular 服务是一个广义的概念,它包括应用所需的任何值、函数或特性。通常是一个具有明确用途的类。服务通过依赖注入系统被注入到需要它们的组件中。

模块

Angular 应用是模块化的,它拥有自己的模块系统,称作 NgModule。每个 Angular 应用都至少有一个 NgModule 类,也就是根模块,它习惯上命名为 AppModule,并位于一个名叫 app.module.ts 的文件中。

评论

博主关闭了当前页面的评论