angular-指令

作者: 姜治宇 | 来源:发表于2020-11-23 19:46 被阅读0次

指令分为两种大的类型:带模板的指令和不带模板的指令。
带模板的指令就是component组件,不带模板的指令又有两种:

1、结构型指令

通过添加和移除dom元素改变dom布局的指令,比如ngIf、ngFor。

2、属性型指令

改变元素的外观和行为的指令,比如ngClass、ngStyle等。

如何自定义指令呢?

首先我们生成一个指令:

ng g directive directives/addbgcolor

模板使用指令:

<h2 [appAddbgcolor]="cc">hello</h2>

addbgcolor.directive.ts:

import { Directive,Input,ElementRef } from '@angular/core';

@Directive({
  selector: '[appAddbgcolor]'
})
export class AddbgcolorDirective {
  @Input() appAddbgcolor;
  constructor(public el:ElementRef) {
    el.nativeElement.style.backgroundColor = 'green';
    //el.nativeElement.className = this.appAddbgcolor;
   }
   ngOnChanges() {//数据发生变化时会调用此生命周期
     //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.
     //Add '${implements OnChanges}' to the class.
     this.el.nativeElement.className = this.appAddbgcolor;
     this.el.nativeElement.addEventListener('click',()=>{
       this.el.nativeElement.style.border = '10px solid black';
     })
   }

}

通过@Input()装饰器可以获取传递过来的信息,而ElementRef则是dom操作相关的类,在constructor里面注入初始化后就可以自由操作dom了。

相关文章

  • angular-指令

    指令分为两种大的类型:带模板的指令和不带模板的指令。带模板的指令就是component组件,不带模板的指令又有两种...

  • angular-自定义指令-E

    angular自定义指令 (1)directive---restrict属性EACM (function() { ...

  • 4-14 Angular-指令link

    指令link

  • angular.js(2) 数据的渲染

    angular-(2) 把数据添加到组件中 eg:ng generate component user-item在...

  • angular-随笔

    And God said,Let there be light:and there was light. 前端知名...

  • Angular-路由

    路由与导航 在用户使用应用程序时,Angular 的路由器能让用户从一个视图导航到另一个视图。 概览 Angula...

  • angular-管道

    管道其实是一些简单的函数,可以在模板表达式中用来接受输入值,并返回一个转换后的值。管道分为内置管道和自定义管道两种...

  • angular-路由

    使用路由需遵循如下步骤: 1、导入路由模块 如果在运行ng new xxx命令时,没有选择路由选项,我们可以手动安...

  • angular-服务

    按照传统设计理念,在组件(component)中不应该直接获取或保存数据, 组件应该聚焦于展示数据,而把数据访问的...

  • Angular-个人整理

    单向从数据源到视图 单向从视图到数据源 双向 DOM property 的值可以改变;HTML attribute...

网友评论

    本文标题:angular-指令

    本文链接:https://www.haomeiwen.com/subject/yfkmiktx.html