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>
效果:
二、自訂屬性型指令
@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中文網其他相關文章!