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

    浅析Angular中的自定义结构型/属性型指令

    青灯夜游青灯夜游2023-01-14 19:17:03转载24

    Angular指令分为三种,组件(带模板指令)、结构型指令(改变宿主文档结构)、属性型指令(改变宿主行为),下面主要介绍自定义结构型指令和自定义属性型指令。

    一、自定义结构型指令

    一个元素上只能放一个结构型指令,结构型指令的书写形式为*指令名,*是一个语法糖,如下代码:

    <div *ngIf=""></div>
    <!-- 等价于 -->
    <ng-template [ngIf]="">
      <div></div>
    </ng-template>

    以下自定义一个结构型指令,当给指令输入superadmin和admin时,DOM节点显示,否则移除节点。【相关教程推荐:《angular教程》】

    @Directive({
      selector: '[appLogin]'
    })
    export class LoginDirective implements OnInit{
      @Input('appLogin') user=""
      constructor(private VCR: ViewContainerRef,private TPL: TemplateRef<any>) { 
      //在指令的构造函数中将 TemplateRef 和 ViewContainerRef 注入成私有变量。
      }
      ngOnInit(){
        if(this.user=='superadmin'||this.user=="admin"){
          this.VCR.createEmbeddedView(this.TPL)
        }else{
          this.VCR.clear()
        }
      }
    }
    <div *appLogin="'superadmin'">超级管理员</div>
    <div *appLogin="'admin'">管理员</div>
    <div *appLogin="'user'">普通会员</div>

    效果:
    在这里插入图片描述
    二、自定义属性型指令

    使用属性型指令,可以更改 DOM 元素和 Angular 组件的外观或行为。

    1、从 @angular/core 导入 ElementRef。ElementRef 的 nativeElement 属性会提供对宿主 DOM 元素的直接访问权限。

    2、在指令的 constructor() 中添加 ElementRef 以注入对宿主 DOM 元素的引用,该元素就是 appColor 的作用目标。

    3、向 ColorDirective 类中添加逻辑,在不同输入条件下,背景分别展现为红、绿、蓝

    @Directive({
      selector: '[appColor]'
    })
    export class ColorDirective implements OnInit{
      @Input() appColor=""
      constructor(private ele:ElementRef) { 
        
      }
      ngOnInit(){
        if (this.appColor == 'superadmin'){
          this.ele.nativeElement.style.backgroundColor="red"
        } else if (this.appColor == 'admin') {
          this.ele.nativeElement.style.backgroundColor = "green"
        }else{
          this.ele.nativeElement.style.backgroundColor = "blue"
        }
      }
    }
    <div [appColor]="'superadmin'">超级管理员</div>
    <div [appColor]="'admin'">管理员</div>
    <div [appColor]="'user'">普通会员</div>**

    效果:

    在这里插入图片描述

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

    以上就是浅析Angular中的自定义结构型/属性型指令的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:Angular
    上一篇:一文带你了解node中的的模块系统 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Angular中什么是变更检测?什么情况下会引起变更检测?• Angular学习之聊聊Http ( 错误处理 / 请求拦截 )• Angular13+ 开发模式太慢怎么办?原因与解决方法介绍• 详解angular中操作DOM元素的方法• 一文探究Angular中的服务端渲染(SSR)• 一文聊聊Angular中的管道(PIPE)
    1/1

    PHP中文网