发表于: 2021-10-08 23:57:06

0 1557


Angular 的管道可以让你在模板中声明显示值的转换逻辑。 带有 @Pipe 装饰器的类中会定义一个转换函数,用来把输入值转换成供视图显示用的输出值。

Angular 自带了很多管道,比如 date 管道和 currency 管道,完整的列表参阅 Pipes API 列表。你也可以自己定义一些新管道。

要在 HTML 模板中指定值的转换方式,请使用 管道操作符 (|)

{{interpolated_value | pipe_name}}

你可以把管道串联起来,把一个管道函数的输出送给另一个管道函数进行转换。 管道还能接收一些参数,来控制它该如何进行转换。比如,你可以把要使用的日期格式传给 date 管道:

<!-- Default format: output 'Jun 15, 2015'-->

 <p>Today is {{today | date}}</p><!-- fullDate format: output 'Monday, June 15, 2015'--><p>The date is {{today | date:'fullDate'}}</p>

 <!-- shortTime format: output '9:43 AM'-->

 <p>The time is {{today | date:'shortTime'}}</p>

指令

Directives

Angular 的模板是动态的。当 Angular 渲染它们的时候,会根据指令给出的指示对 DOM 进行转换。 指令就是一个带有 @Directive() 装饰器的类。

组件从技术角度上说就是一个指令,但是由于组件对 Angular 应用来说非常独特、非常重要,因此 Angular 专门定义了 @Component() 装饰器,它使用一些面向模板的特性扩展了 @Directive() 装饰器。

除组件外,还有两种指令:结构型指令属性型指令。 Angular 本身定义了一系列这两种类型的指令,你也可以使用 @Directive() 装饰器来定义自己的指令。

像组件一样,指令的元数据把它所装饰的指令类和一个 selector 关联起来,selector 用来把该指令插入到 HTML 中。 在模板中,指令通常作为属性出现在元素标签上,可能仅仅作为名字出现,也可能作为赋值目标或绑定目标出现。

结构型指令

结构型指令通过添加、移除或替换 DOM 元素来修改布局。 这个范例模板使用了两个内置的结构型指令来为要渲染的视图添加程序逻辑:

src/app/hero-list.component.html (structural)
<li *ngFor="let hero of heroes"></li><app-hero-detail *ngIf="selectedHero"></app-hero-detail>

  • *ngFor 是一个迭代器,它要求 Angular 为 heroes 列表中的每个英雄渲染出一个 <li>

  • *ngIf 是个条件语句,只有当选中的英雄存在时,它才会包含 HeroDetail 组件。

属性型指令

属性型指令会修改现有元素的外观或行为。 在模板中,它们看起来就像普通的 HTML 属性一样,因此得名“属性型指令”。

ngModel 指令就是属性型指令的一个例子,它实现了双向数据绑定。 ngModel 修改现有元素(一般是 <input>)的行为:设置其显示属性值,并响应 change 事件。

src/app/hero-detail.component.html (ngModel)
<input type="text" id="hero-name" [(ngModel)]="hero.name">

Angular 还有很多预定义指令,有些修改布局结构(比如 ngSwitch),有些修改 DOM 元素和组件的样子(比如 ngStyle 和 ngClass)。



返回列表 返回列表
评论

    分享到