angular常用组件,简述angularjs中模块的作用

  angular常用组件,简述angularjs中模块的作用

  本文带你认识angular中的指令,介绍三种类型的指令:组件指令、结构指令和属性指令。希望对你有帮助!

  Angular中有三种类型的指令:

  组件型指令——组件比较特殊,有模板结构指令——通过添加和删除DOM元素来改变DOM布局的指令。常用的有:*ngIf,*ngFor,ngSwitch属性指令——改变元素、组件外观和行为的指令或其他指令。常用的有:NgClass,NgStyle【相关教程推荐:《angular教程》】

  组件型指令

  当查看angular源代码时,您将看到以下内容

  所以组件继承了指令,但是它是特殊的,有一个模板。

  同样,由于组件继承了指令,下面的一系列属性和结构指令的操作都可以在组件中实现。

  但是因为指令的目的是复用,所以这个操作在组件中无法达到这个目的,所以强烈不推荐。

  属性型指令

  上面提到的属性指令用于改变元素、组件或其他指令的外观和行为。

  那么我们如何创建自己的属性指令呢?

  首先,创建指令很像创建组件。

  导入指令decorator导入符号Input、TemplateRef和ViewContainerRef,根据指令类型和要求选择向指令类添加decorator。设置CSS属性选择器以标识此指令应该应用于模板中的哪个元素。自定义属性型指令

  1.创建属性指令appHighlight指令:highlight.directive.ts

  //1,导入指令装饰器

  //3.导入ElementRef。ref的nativeElement属性提供对宿主DOM元素的直接访问。

  从“@angular/core”导入{ Directive,element ref };

  //2.@Directive () decorator的选择器属性指定指令的CSS属性选择器[appHighlight]。

  @指令({

  选择器:“[appHighlight]”

  })

  导出类HighlightDirective {

  //4.构造函数使用ElementRef注入宿主DOM元素的引用。

  构造函数(el: ElementRef) {

  //将相应元素的背景色设置为黄色

  El . native element . style . background color= yellow ;

  }

  }2.主体元素的使用

  p appHighlightHighlight突出显示我!/p处理用户事件

  以下指令的功能是:

  可以接收两个参数,其中一个是另一个的默认值。

  监控主机元素的鼠标进出事件,进入时主机的背景色就是上面传入的值。

  从“@angular/core”导入{ Directive,ElementRef,HostListener,Input };

  @指令({

  //指定指令的属性选择器

  选择器:“[appHighlight]”

  })

  导出类HighlightDirective {

  @ Input( app highlight )highlight color:string;

  @ Input()default color:string;

  //ElementRef在构造函数中用于注入宿主DOM元素的引用。

  构造函数(私有el: ElementRef) { }

  //侦听宿主元素mousenter事件

  @ host listener( mouse enter )on mouse enter(){

  this . highlight(this . highlight color this . default color);

  }

  //侦听宿主元素mouseleave事件

  @ host listener( mouse leave )onmouse leave(){

  this.highlight(空);

  }

  //修改背景颜色

  私有高亮显示(颜色:字符串){

  //ElementRef提供通过其nativeElement属性直接访问宿主DOM元素的能力。

  this . El . native element . style . background color=color;

  }

  }主体元素用法

  app highlight= red default color= black 主机元素/p结构型指令

  结构指令的职责是HTML布局。它们塑造或重新塑造DOM的结构,这通常是通过添加、删除和操作它们所附加的宿主元素来实现的。

  常见的内置结构指令:

  NgIf ——从模板创建或销毁子视图。NgFor ——为列表中的每个条目重复呈现一个节点。NgSwitch ——在待机视图之间切换的一组指令。具体方法见官网自定义结构性指令

  效果是:

  如果条件是假值,并且有角的以前尚未创建视图,则此作曲者会导致视图容器从模板创建出嵌入式视图。如果条件为真值,并且当前正显示着视图,则此作曲者会清除容器,这会导致销毁该视图。

  1、创建指令分时(同分时)文件:除非。指令. ts

  //1、导入输入、模板参考和ViewContainerRef

  从" @角度/核心"导入{ Directive,Input,TemplateRef,ViewContainerRef }。

  //2、添加管理的装饰器

  @指令({选择器:[app until] })

  导出类除非有指令{

  private hasView=false

  //3、在指令的构造函数中将模板参考和ViewContainerRef注入成私有变量。

  构造器(

  private templateRef:TemplateRefany,

  私有viewContainer: ViewContainerRef

  ) { }

  //4、添加一个带作曲者的@Input()属性应用除非

  @ Input()set app除非(条件:布尔){

  //如果条件是假值,并且有角的以前尚未创建视图,则此作曲者会导致视图容器从模板创建出嵌入式视图。

  如果(!条件!this.hasView) {

  这个。查看容器。创建嵌入式视图(this。template ref);

  这个。has view=true

  } else if(以此为条件。有视图){

  //如果条件为真值,并且当前正显示着视图,则清除容器,这会导致销毁该视图。

  这个。查看容器。clear();

  这个。has view=false

  }

  }

  }2、测试指令

  p *除非=condition 显示这句话,除非条件为真100元/人例如*ngIf

  div * ngIf= hero class= name { hero。name } }/div会被转换为

  尼日利亚模板[ngIf]=英雄

  div class= name"{ hero。name } }/div

  /ng-模板角度不会创建真正的尼日利亚模板元素,只会将p和注释节点占位符渲染到数字正射影像图中

  自定义指令例详

  下面的指令会去掉投入输入框中的所有空格

  从" @角度/核心"导入{组件,指令,HostListener }

  从" @ angular/core/src/render 3/instructions "导入{宿主元素};

  从" @angular/forms "导入{ FormGroup,FormControl,验证器,NgControl }

  @组件({

  选择器:"应用程序测试",

  templateUrl:“”./test.component.html ,

  //声明:[测试指令]

  })

  导出类测试组件{

  构造函数(){}

  ngOninit() {}

  名字="";

  姓氏="";

  profileForm=新表单组({

  firstName: new FormControl(aa ,[Validators.required,Validators。模式([阿扎-Z0-9]* ),

  姓氏:新的FormControl( ,Validators.required),

  });

  onchange(事件){

  console.log(触发了onchange ,this.firstName)

  }

  }

  @指令({

  选择器:"[testDirective]",

  //主机:{

  //要传递传递事件参数,使用这种方法,不用的可以使用下面的@HostListener方法

  //(keyup): onkeyup($event),

  //}

  })

  导出类测试指令{

  构造函数(公共ngControl: NgControl) {}

  ngOnInit() {}

  //onkeyup(事件){

  @ host listener( keyup )onkeyup(event){

  //console.log(event ,event)//事件参数

  console.log(this.ngControl)

  控制台。日志(这个。ng控制。控制)

  控制台。日志(这个。ng控制。控制。值)

  if(/\ s/g . test(this。ng控制。控制。值)){

  //只读属性,要通过设定值修改

  //这个。ng控制。控制。价值=这个。ng控制。控制。价值。替换(/\ s/g,)

  这个。ng控制。控制。setvalue(这个。ng控制。控制。价值。替换(/\ s/g,))

  }

  }

  }使用:

  表单操作= [表单组]=profileForm

  标签

  名字:输入type= text 测试指令表单控件名称=名字[(ng模型)]=名字(ngModelChange)= onchange($ event)

  /标签

  标签

  姓氏:输入type= text 测试指令表单控件名称=姓氏

  /标签

  按钮类型=提交[禁用]=!profileForm.valid "提交/按钮

  /表单使用效果

  上面输入的初始值是aa,中间输入一个空格字符,先触发onchange事件,然后在指令中触发keyup事件,修改firstName的值,然后再次触发onchange事件,这样change事件一共触发了两次。

  有关编程的更多信息,请访问:编程入门!这就是angular中三类指令的细节:组件类型、结构类型和属性类型。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: