IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> angular2-directives指令 -> 正文阅读

[JavaScript知识库]angular2-directives指令

属性型指令

创建一个自定义hightlight指令示例。

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

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective {

  constructor(private el: ElementRef) {}

  @HostListener('mouseenter') onMouseEnter(){
    this.highlight('yellow');
  }

  @HostListener('mouseleave') onMouseLeave(){
    this.highlight('');
  }

   private highlight(color: string){
     this.el.nativeElement.style.backgroundColor = color;
   }
}

导入指令:

import { HighlightDirective } from './highlight.directive';
@NgModule({
  declarations: [
    HighlightDirective,
  ],
})
<span appHighlight>si3333333</span>

将值传递给highlight指令

@Input() appHighlight = '';
@HostListener('mouseenter') onMouseEnter(){
this.highlight(this.appHighlight);
}

<div>
  <input type="radio" name="colors" (click)="color='lightgreen'">lightgreen
  <input type="radio" name="colors" (click)="color='yellow'">yellow
  <input type="radio" name="colors" (click)="color='cyan'">cyan
</div>
<span [appHighlight]="color">si3333333</span>

设置highlight指令默认值&绑定第二个值

export class HighlightDirective {
  @Input() appHighlight = '';
  @Input() defaultColor = '';
  constructor(private el: ElementRef) {}
  @HostListener('mouseenter') onMouseEnter(){
    this.highlight(this.appHighlight||this.defaultColor||'red');
  }
  @HostListener('mouseleave') onMouseLeave(){
    this.highlight('');
  }
  private highlight(color: string){
    this.el.nativeElement.style.backgroundColor = color;
  }
}
<div>
  <input type="radio" name="colors" (click)="color='lightgreen'">lightgreen
  <input type="radio" name="colors" (click)="color='yellow'">yellow
  <input type="radio" name="colors" (click)="color='cyan'">cyan
</div>
<span [appHighlight]="color">si3333333</span>
<p [appHighlight]="color" defaultColor="violet">si3333331113</p>

☆ ngNonBindable
设置该指令,模板内的表达式求值失效。

<p ngNonBindable>2021年9月2日15:16:03 -- {{ 1 + 1 }}</p>

结构型指令

appUnless示例
unless.directive.ts

import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({
  selector: '[appUnless]'
})
export class UnlessDirective {
  private hasView = false;
  constructor(
    private templateRef: TemplateRef<any>,
    private viewContainer: ViewContainerRef
  ) { }

  @Input() set appUnless(condition: boolean){
    if(!condition && !this.hasView){
      this.viewContainer.createEmbeddedView(this.templateRef);
      this.hasView = true;
    }else if(condition && this.hasView){
      this.viewContainer.clear();
      this.hasView = false;
    }
  }
}
condition = false;
<!-- 指令简写形式 -->
<p *appUnless="!condition">Lorem .</p>

<!-- 指令非简写形式 -->
<ng-template [appUnless]="!condition">
  <p>Lorem .</p>
</ng-template>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:24:58  更:2021-09-04 17:25:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:05:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码