Angular27 指令
1 自定概述
2 自定义指令
详情参见《揭秘Angular2》
2.1 属性指令
》工具代码
- <div class="panel panel-primary">
- <div class="panel-heading">
- <ng-content select=".heading"></ng-content>
- </div>
- <div class="panel-body">
- <ng-content select=".body"></ng-content>
- </div>
- <div class="panel-footer">
- {{currentDate | date : "yyyy-MM-dd HH:mm:ss"}}
- </div>
- </div>
HTML
- import { Component, OnInit } from '@angular/core';
- import { setInterval } from 'timers';
- @Component({
- selector: 'panel',
- templateUrl: './panel.component.html',
- styleUrls: ['./panel.component.scss']
- })
- export class PanelComponent implements OnInit {
- currentDate : Date;
- constructor() { }
- ngOnInit() {
- this.currentDate = new Date();
- setInterval(() => {
- this.currentDate = new Date();
- }, 1000);
- }
- }
TS
》指令代码
- import { Directive, Input, ElementRef, HostListener } from '@angular/core';
- @Directive({
- selector: '[appMyHighLight]'
- })
- export class MyHighLightDirective {
- @Input()
- highlightColor : string;
- constructor(
- private _elementRef : ElementRef // 依赖注入:ElementRef对象用来操作DOM节点
- ) { }
- @HostListener("mouseenter") // 监听鼠标移入事件
- onMouseEnter() {
- this.highlight(this.highlightColor);
- }
- @HostListener("mouseleave") // 监听鼠标移除事件
- onmouseleave() {
- this.highlight(null);
- }
- // 利用 ElementRef 修改DOM
- private highlight(color : string) {
- this._elementRef.nativeElement.style.backgroundColor = color;
- }
- }
TS
》应用指令的组件
- <panel>
- <div class="heading">
- 测试组件01
- </div>
- <div appMyHighLight highlightColor="#ff3300" class="body">
- <p>重庆是个好地方</p>
- </div>
- </panel>
HTML
- import { Component, OnInit } from '@angular/core';
- import { TestService } from '../services/test.service';
- @Component({
- selector: 'test01',
- templateUrl: './test01.component.html',
- styleUrls: ['./test01.component.scss']
- })
- export class Test01Component implements OnInit {
- constructor(
- ) { }
- ngOnInit() {
- }
- onClick() : void {
- // 将对象转化成JSON字符串并存储道浏览器缓存中
- window.localStorage.setItem("user", JSON.stringify({name: "王杨帅", age: 9}));
- }
- }
TS
2.2 结构性指令
》指令代码
- import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
- @Directive({
- selector: '[appDelay]'
- })
- export class DelayDirective {
- constructor(
- private templateRef: TemplateRef<any>,
- private viewContainerRef: ViewContainerRef
- ) { }
- @Input() set appDelay(time: number) {
- setTimeout(() => {
- this.viewContainerRef.createEmbeddedView(this.templateRef);
- }, time);
- }
- }
TS
》应用指令的组件
- <panel>
- <div class="heading">
- 测试组件02
- </div>
- <div class="body">
- <div *ngFor="let item of [1,2,3]">
- <span *appDelay="500 * item">
- 第 {{item}} 张卡片
- </span>
- </div>
- </div>
- </panel>
HTML
- import { Component, OnInit } from '@angular/core';
- import { TestService } from '../services/test.service';
- @Component({
- selector: 'test02',
- templateUrl: './test02.component.html',
- styleUrls: ['./test02.component.scss']
- })
- export class Test02Component implements OnInit {
- constructor(
- ) { }
- ngOnInit() {
- }
- onClick() : void {
- // 从浏览器缓存中获取数据【PS: 获取到的是string类型的数据】
- let data = localStorage.getItem("user");
- console.log(data);
- // 将JSON字符串转化成对象
- let json_data = JSON.parse(data);
- console.log(json_data.name);
- window.localStorage.removeItem("user");
- }
- }
TS
Angular27 指令的更多相关文章
- iOS逆向工程之Hopper中的ARM指令
虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...
- 步入angularjs directive(指令)--点击按钮加入loading状态
今天我终于鼓起勇气写自己的博客了,激动与害怕并存,希望大家能多多批评指导,如果能够帮助大家,也希望大家点个赞!! 用angularjs 工作也有段时间了,总体感觉最有挑战性的还是指令,因为没有指令的a ...
- Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- [Django]用户权限学习系列之User权限基本操作指令
针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除 ...
- 机器指令翻译成 JavaScript —— No.5 指令变化
上一篇,我们通过内置解释器的方案,解决任意跳转的问题.同时,也提到另一个问题:如果指令发生变化,又该如何应对. 指令自改 如果指令加载到 RAM 中,那就和普通数据一样,也是可以随意修改的.然而,对应 ...
- ARM的栈指令
ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...
- IL指令详细表
名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...
- Angular学习-指令入门
1.指令的定义 从用户的角度来看,指令就是在应用的模板中使用的自定义HTML标签.指令可以很简单,也可以很复杂.AngularJS的HTML编译器会解析指令,增强模板的功能.也是组件化未来的发展趋势, ...
随机推荐
- 9.9 Python 文档字符串
9.9 Python 文档字符串. 进入 Python 标准库所在的目录. 检查每个 .py 文件看是否有__doc__ 字符串, 如果有, 对其格式进行适当的整理归类. 你的程序执行完毕后, 应该会 ...
- 使用Gson轻松解决复杂结构的Json数据解析
转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50961803 JSON简介 JSON(JavaScript Object Notati ...
- Java JDK安装和配置(Windows)
安装和配置JDK JDK中自带了JRE,不需要单独下载, 打开JDK安装, 选择安装目录,下一步,装完JDK,会问是否安装JRE,选下一步, 最后还会问是否安装Java FX, 装完后就全部完成了JD ...
- Django--django-admin.py on windows does not work
使用命令:Python django-admin.py startproject projectname 使用django-admin.py startapp myblog没有创建新的app,使用下面 ...
- (装)Android杂谈--禁止TimePicker控件通过keyboard输入
Android 4.1版本以上用的是类似与ios的滚动时间控件,但是4.1以下,用的TimePicker确实通过点击上下按钮来更改时间的,虽然也提供了编辑框编辑,但是可能会超出编辑范围 如果要禁止编辑 ...
- dxjk中 支付宝二维码支付 git 存疑
线上的vendor/latrell/alipay 文件拉取不了至本地,失去了git监控 要想本地使用 1.注释掉config/app.php 'providers' 下的Latrell模块 2.下载线 ...
- Android的移动存储解决方案之SharedPreferences
搞Android有一段时间了,但是并没写过有关Android的博客,今天给大家介绍一下SharedPreferences. 使用SharedPreferences保存key-value对的步骤如 ...
- [三卷天书]记一个asp.net生成两个日期范围内生成随机时间的方法
想网上找个生成随机天数的方法找不到,后面只得自己写了,贴给大家方便使用 思路:算两个日期的相差天数,然后在0到相差天数的范围内生成随机数,再用结束时间的天数部分减去这个随机数,代码: /// < ...
- VirtualBox 虚拟机 centos7 下 设置静态ip 并支持 xshell 远程登陆的设置方法
1.设置虚拟机使用“桥接模式” 2.使用 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 打开配置文件(其中 enp0s3 是你的linux的网卡名,在 ...
- CommonJS、CMD和AMD规范分别是什么
CommonJS.CMD和AMD规范分别是什么 Commonjs是用在服务器端的,同步的,如nodejs amd, cmd是用在浏览器端的,异步的,如requirejs和seajs 其中,amd先提出 ...