我是靠谱客的博主 顺心巨人,这篇文章主要介绍angular学习之聊聊指令和管道,现在分享给大家,希望可以做个参考。

本篇文章带大家了解一下angular中的指令(Directive)和管道(Pipe),简单介绍一下相关知识点:内置指令和自定义指令,内置管道和自定义管道,希望对大家有所帮助!

指令 Directive


指令是 Angular 提供的操作 DOM 的途径。指令分为属性指令结构指令

  • 属性指令:修改现有元素的外观或行为,使用 [] 包裹。

  • 结构指令:增加、删除 DOM 节点以修改布局,使用*作为指令前缀。【相关教程推荐:《angular教程》】

1、内置指令

1.1 *ngIf

根据条件渲染 DOM 节点或移除 DOM 节点。

复制代码
1
<div *ngIf="data.length == 0">没有更多数据</div>
登录后复制
复制代码
1
2
3
<div *ngIf="data.length > 0; then dataList else noData"></div> <ng-template #dataList>课程列表</ng-template> <ng-template #noData>没有更多数据</ng-template>
登录后复制

ng-template 是用来定义模板的,当使用 ng-template 定义好一个模板之后,可以用 ng-container templateOutlet 指令来进行使用。

复制代码
1
2
3
4
5
6
<ng-template #loading> <button (click)="login()">login</button> <button (click)="sigup()">sigup</button> </ng-template> <ng-container *ngTemplateOutlet="loading"> </ng-container>
登录后复制

1.2 [hidden]

根据条件显示 DOM 节点或隐藏 DOM 节点 (display)。

复制代码
1
2
<div [hidden]="data.length == 0">课程列表</div> <div [hidden]="data.length > 0">没有更多数据</div>
登录后复制

1.3 *ngFor

遍历数据生成HTML结构

复制代码
1
2
3
4
5
6
7
8
9
10
interface List { id: number name: string age: number } list: List[] = [ { id: 1, name: "张三", age: 20 }, { id: 2, name: "李四", age: 30 } ]
登录后复制
复制代码
1
2
3
4
5
6
7
8
9
10
11
<li *ngFor=" let item of list; let i = index; let isEven = even; let isOdd = odd; let isFirst = first; let isLast = last; " > </li>
登录后复制
复制代码
1
<li *ngFor="let item of list; trackBy: identify"></li>
登录后复制
复制代码
1
2
3
identify(index, item){ return item.id; }
登录后复制

2、自定义指令

需求:为元素设置默认背景颜色,鼠标移入时的背景颜色以及移出时的背景颜色。

复制代码
1
<div [appHover]="{ bgColor: 'skyblue' }">Hello Angular</div>
登录后复制
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { AfterViewInit, Directive, ElementRef, HostListener, Input } from "@angular/core" // 接收参的数类型 interface Options { bgColor?: string } @Directive({ selector: "[appHover]" }) export class HoverDirective implements AfterViewInit { // 接收参数 @Input("appHover") appHover: Options = {} // 要操作的 DOM 节点 element: HTMLElement // 获取要操作的 DOM 节点 constructor(private elementRef: ElementRef) { this.element = this.elementRef.nativeElement } // 组件模板初始完成后设置元素的背景颜色 ngAfterViewInit() { this.element.style.backgroundColor = this.appHover.bgColor || "skyblue" } // 为元素添加鼠标移入事件 @HostListener("mouseenter") enter() { this.element.style.backgroundColor = "pink" } // 为元素添加鼠标移出事件 @HostListener("mouseleave") leave() { this.element.style.backgroundColor = "skyblue" } }
登录后复制

管道 Pipe


管道的作用是格式化组件模板数据

1、内置管道

  • date 日期格式化

  • currency 货币格式化

  • uppercase 转大写

  • lowercase 转小写

  • json 格式化 json 数据

复制代码
1
{{ date | date: "yyyy-MM-dd" }}
登录后复制

2、自定义管道

需求:指定字符串不能超过规定的长度

复制代码
1
2
<!-- 这是一... --> {{'这是一个测试' | summary: 3}}
登录后复制
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
// summary.pipe.ts import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'summary' }); export class SummaryPipe implements PipeTransform { transform (value: string, limit?: number) { if (!value) return null; let actualLimit = (limit) ? limit : 50; return value.substr(0, actualLimit) + '...'; } }
登录后复制
复制代码
1
2
3
4
5
6
7
// app.module.ts import { SummaryPipe } from './summary.pipe' @NgModule({ declarations: [ SummaryPipe ] });
登录后复制

最后

以上就是顺心巨人最近收集整理的关于angular学习之聊聊指令和管道的全部内容,更多相关angular学习之聊聊指令和管道内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(110)

评论列表共有 0 条评论

立即
投稿
返回
顶部