• 技术文章 >web前端 >js教程

    angular学习之聊聊指令和管道

    青灯夜游青灯夜游2022-05-17 11:01:57转载203
    本篇文章带大家了解一下angular中的指令(Directive)和管道(Pipe),简单介绍一下相关知识点:内置指令和自定义指令,内置管道和自定义管道,希望对大家有所帮助!

    指令 Directive


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

    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"
      }
    }

    管道 Pipe


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

    1、内置管道

    {{ date | date: "yyyy-MM-dd" }}

    2、自定义管道

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

    <!-- 这是一... -->
    {{'这是一个测试' | summary: 3}}
    // 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) + '...';
        }
    }
    // app.module.ts
    import { SummaryPipe } from './summary.pipe'
    @NgModule({
        declarations: [
          SummaryPipe
        ] 
    });

    更多编程相关知识,请访问:编程视频!!

    以上就是angular学习之聊聊指令和管道的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:Angular.js Angular
    上一篇:JavaScript知识点整理之获取元素和节点 下一篇:JavaScript内置对象Math实例分享
    千万级数据并发解决方案

    相关文章推荐

    • angular、react和vue有什么区别• Angular中怎么自定义视频播放器• 浅析Angular+rxjs怎么实现拖拽功能?• 什么是管道?浅析Angular中的管道(PIPE)• Angular项目中怎么使用 SASS 样式• Angular知识点分享:聊聊表单、管道、绑定、指令、通信和周期
    1/1

    PHP中文网