加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 智能机器人、大数据、CDN、图像分析、语音技术!
当前位置: 首页 > 教程 > 正文

Angular里如何自定义结构型指令和属性型指令

发布时间:2023-07-14 12:00:31 所属栏目:教程 来源:转载
导读:   给大家分享一下Angular中如何自定义结构型指令和属性型指令的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完
  给大家分享一下Angular中如何自定义结构型指令和属性型指令的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
 
  一、自定义结构型指令
 
  一个元素上只能放一个结构型指令,结构型指令的书写形式为*指令名,*是一个语法糖,如下代码:
 
  <div *ngIf=""></div>
 
  <!-- 等价于 -->
 
  <ng-template [ngIf]="">
 
    <div></div>
 
  </ng-template>
 
  以下自定义一个结构型指令,当给指令输入superadmin和admin时,DOM节点显示,否则移除节点。
 
  @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>
 
  效果:
 
  Angular中如何自定义结构型指令和属性型指令
 
  二、自定义属性型指令
 
  使用属性型指令,可以更改 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>**
 

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章