Cet article vous amènera à comprendre la Directive et le Pipe dans angular, et présentera brièvement les points de connaissances pertinents : instructions intégrées et instructions personnalisées, tuyaux intégrés et tuyaux personnalisés. J'espère qu'il sera utile à tout le monde. !
La directive est le moyen fourni par Angular pour manipuler le DOM
. Les instructions sont divisées en Instructions d'attribut
et Instructions structurelles
. 操作 DOM
的途径。指令分为属性指令
和结构指令
。
属性指令:修改现有元素的外观或行为,使用 []
包裹。
结构指令:增加、删除 DOM 节点以修改布局,使用*
作为指令前缀。【相关教程推荐:《angular教程》】
1、内置指令
1.1 *ngIf
根据条件渲染
DOM 节点或移除
DOM 节点。
<div *ngIf="data.length == 0">没有更多数据</div>
<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
指令来进行使用。
<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)。
<div [hidden]="data.length == 0">课程列表</div> <div [hidden]="data.length > 0">没有更多数据</div>
1.3 *ngFor
遍历数据生成HTML结构
interface List { id: number name: string age: number } list: List[] = [ { id: 1, name: "张三", age: 20 }, { id: 2, name: "李四", age: 30 } ]
<li *ngFor=" let item of list; let i = index; let isEven = even; let isOdd = odd; let isFirst = first; let isLast = last; " > </li>
<li *ngFor="let item of list; trackBy: identify"></li>
identify(index, item){ return item.id; }
2、自定义指令
需求:为元素设置默认背景颜色,鼠标移入时的背景颜色以及移出时的背景颜色。
<div [appHover]="{ bgColor: 'skyblue' }">Hello Angular</div>
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" } }
管道的作用是格式化组件模板数据
Directive Attribut : Pour modifier l'apparence ou le comportement d'un élément existant, utilisez []
pour l'envelopper. Instructions structurelles : ajoutez et supprimez des nœuds DOM pour modifier la disposition, utilisez *
comme préfixe d'instruction. [Recommandations de tutoriel associées : "
1. Instructions intégrées
*ngIf
Rendu basé sur les conditions < /code> Nœud DOM ou <code>supprimer
Nœud DOM.
{{ date | date: "yyyy-MM-dd" }}
<!-- 这是一... --> {{'这是一个测试' | summary: 3}}
ng-template
est utilisé pour définir des modèles. Après avoir utilisé ng-template
pour définir un modèle, vous pouvez utiliser ng-container
Utiliser. avec la directive templateOutlet
. // 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) + '...'; } }
[caché]
Traversez les données pour générer la structure HTML 2. Instructions personnalisées Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!Afficher
les nœuds DOM ou masquer
les nœuds DOM (affichage) en fonction des conditions. // app.module.ts
import { SummaryPipe } from './summary.pipe'
@NgModule({
declarations: [
SummaryPipe
]
});
*ngFor
formater les données du modèle de composant
. 🎜🎜🎜🎜🎜1. Pipeline intégré🎜🎜🎜🎜🎜🎜formatage de la date🎜🎜🎜🎜formatage de la devise🎜🎜🎜🎜minuscule en minuscule 🎜🎜🎜🎜données json au format json 🎜 🎜🎜rrreee🎜🎜🎜2. Pipeline personnalisé🎜🎜🎜🎜Exigence : La chaîne spécifiée ne peut pas dépasser la longueur spécifiée🎜rrreeerrreeerrreee🎜Pour plus de connaissances sur la programmation, veuillez visiter : 🎜Vidéo de programmation🎜 ! ! 🎜