Angular结构型指令

结构型指令就是对DOM的操作,放在模板组件中它是表达式,单独提取出来它被称为结构型指令。

结构型指令的职责是HTML布局。 它们塑造或重塑DOM的结构,比如添加、移除或维护这些元素。所有的包括自定义的结构型指令在模版中使用时必须加*前缀

<div *ngIf="hero" >{{hero.name}}</div>

星号(*)这个简写方法是一个微语法,而不是通常的模板表达式。 Angular会解开这个语法糖,变成一个<ng-template>标记,包裹着宿主元素及其子元素。

自定义结构型属性涉及的东西和属性型指令差不多,都是@Directive、CSS选择器、@Input。但是结构型指令需要访问组件模版内容,和渲染组件模板内容的工具,即@angular/core中的TemplateRefViewContainerRef服务。

import ...
import { TemplateRef, ViewContainerRef } from '@angular/core';

@Derective({selector: '[指令名]'})
...
export class ...

constructor (
  private templateRef: TemplateRef,
  private viewContainerRef: ViewContainerRef) {}

@Input('别名')                                //通过viewContainerRef来渲染组件模板内容
  set 绑定的属性名(形参: 值类型boolean) {       //假设这里是boolean类型
    if (形参) {
      this.viewContainerRef.createEmbeddedView(this.templateRef);  //this.templateRef这个组件的模板
    } else {...}
  }        

对于结构型指令常用到setter和getter拦截输入属性,setter可以对@Input获取的属性进行在封装处理,再通过getter返回要设置的属性值。

 

 

转载于:https://my.oschina.net/u/3412211/blog/895334

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值