angular directive 自定义指令--属性方式简单学习

1. 自定义指令 - @directive

import { Component, Directive, HostListener, ElementRef } from ‘@angular/core‘

@Directive({

selector: ‘[input-trim]‘,

host: {

‘(keyup)‘: ‘keyUpFunc($event.target)‘,

‘(click)‘: ‘onClick($event.target)‘,

‘role-data‘: ‘input-trim‘

}

})

export class InputTrimDirective {

private _elementRef: ElementRef

constructor(_elementRef: ElementRef) {

console.log(_elementRef, "获取挂载属性的DOM")

this._elementRef = _elementRef

}

/**

*  是属性装饰器,用来为宿主元素添加事件监,类似于我们原生JavaScript的addEventListener

@HostListener这里我们监听了keyup事件(可以定义原生JavaScript中的其他事件),

当表单中有输入的时候我们就会调用方法,传递了一个$event对象进去,后面紧跟我们触法keyup事件的方法体

可以用 @Component 中的 host 代替

* */

// @HostListener(‘keyup‘, [‘$event.target‘])

keyUpFunc(evt) {

if(evt.value) {

this._elementRef.nativeElement.value = evt.value + ‘_num‘

}

}

onClick(evt) {

console.log(evt.innerHTML, "click_div")

if(evt.innerHTML) {

this._elementRef.nativeElement.innerHTML = evt.innerHTML + ‘_num‘

}

2. DOM 中使用 -- 属性方式使用

<div>

<h1>指令---directive</h1>

<input type="text" class="input_1" input-trim>

<div class="click_div" input-trim>sasas</div>

<input type="text" class="input_2" role-data=‘input-trim‘>

</div>

3. 在根模块中引用

import { BrowserModule } from ‘@angular/platform-browser‘;

import { NgModule } from ‘@angular/core‘;

import { AppRoutingModule } from ‘./app-routing.module‘;

import { AppComponent } from ‘./app.component‘;

import { TemplateDirective } from ‘./directive/template-directive.component‘

// 指令

import { InputTrimDirective } from ‘./directive/template-directive.component‘

@NgModule({

// 引入组件,指令

declarations: [

AppComponent,

TemplateDirective,

InputTrimDirective

],

imports: [

BrowserModule,

AppRoutingModule

],

providers: [],

bootstrap: [AppComponent]

})

export class AppModule { }

原文地址:https://www.cnblogs.com/monkey-K/p/11449528.html

时间: 2024-10-06 15:51:45

angular directive 自定义指令--属性方式简单学习的相关文章

Vue2.x directive自定义指令

directive自定义指令 除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令. 注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件--然而,有的情况下,你仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令. 官方建议directive是对纯 DOM 元素进行底层操作使用,一般情况下还是建议使用组件的复用. directive的意义 自定义指令是用来操作DOM的. 尽管数据驱动是Vue的核心之一,但是在实际情况下,并不是所有的情

angular创建自定义指令的四种方式

angular除了内置的部分指令,还可以通过.directive来自定义指令.要调用自定义指令,HTML 元素上需要添加自定义指令名.使用驼峰法来命名一个指令:nsHeader,在调用时使用需要-来分割:ns-header.自定义指令调用的的方式有四种,如下: 元素名 属性 类名 注释 1.使用元素名调用: 1 <!DOCTYPE html> 2 <html ng-app="myApp"> 3 <head> 4 <meta charset=&q

angular的自定义指令---详解

1.angualr指令 在angualr自己里面有许多丰富的指令,但都是平时所常见的,但对于自己所需要的可能有所欠缺,所以自己可能会摒弃原声指令,自己封装更为健壮灵活的指令: 其实angular里面的指令也是基于下面所用到的步骤来创建的,只不过他都添加到了全局中,所以可以直接使用: 2.创建自定义指令 首先创建模块app,再使用app的服务directive方法, 创建指令内容第一个参数自定义的名字,第二个参数是自定义参数属性对象,该对象包括的属性基本在代码注释解释清楚: // a.创建模块 v

Vue.directive 自定义指令

// 注册一个全局自定义指令 `v-focus` Vue.directive('focus', { // 当被绑定的元素插入到 DOM 中时…… inserted: function (el) { // 聚焦元素 el.focus() } }) 局部 directives: { focus: { // 指令的定义 inserted: function (el) { el.focus() } } } 页面使用 <input v-focus> 自定义指令中传递的三个参数 el: 指令所绑定的元素,

-_-#【Angular】自定义指令directive

AngularJS学习笔记 <!DOCTYPE html> <html ng-app="Demo"> <head> <meta charset="utf-8"> <title></title> </head> <body> <script src="jquery-1.8.3.min.js"></script> <scrip

angular自定义指令scope属性学习笔记

指令在angular项目中的应用非常频繁,当它自带的指令不能满足我们的需求时,我们就需要自定义指令: 在angular,作用域是一个很重要的概念.同样的,要定义一个指令,我们也需要设置他的sope: angular为自定义指令提供了三种scope:①不创建独立的作用域,直接使用父作用域(false):②创建一个继承自它的父级作用域的独立作用域(true):③创建一个完全与外部隔离的作用域({}):

Angular中的内置指令和自定义指令

NG中的指令,到底是什么(what)? 为什么会有(why)?以及怎样使用(how)? What: 在NG中,指令扩展HTML功能,为 DOM 元素调用方法.定义行为绑定数据等. Why: 最大程度减少DOM操作,实现数据绑定,与业务逻辑进行交互. How: 指令主要分为两种:内置指令和自定义指令,通过下面的例子,简单记录一下如何去使用. 内置指令 在官方API文档上罗列了很多指令,内置指令可以分为:普通指令 和 事件指令,他们都是作用于HTML之上的,通过添加属性的方式来实现的.简单看一下一些

vue自定义指令(Directive中的clickoutside.js)的理解

.array p { counter-increment: longen; margin-left: 10px } .array p::before { content: counter(longen) "." } .alink { font-size: 16px; color: blue } 阅读目录 vue自定义指令clickoutside.js的理解 回到顶部 vue自定义指令clickoutside.js的理解 vue自定义指令请看如下博客: vue自定义指令 一般在需要 DO

带你走近AngularJS - 创建自定义指令

为什么使用AngularJS 指令? 使用过 AngularJS 的朋友应该最感兴趣的是它的指令.现今市场上的前端框架也只有AngularJS 拥有自定义指令的功能,并且AngularJS 是目前唯一提供Web应用可复用能力的框架. 目前有很多JavaScript 产品提供插件给Web开发人员.例如, Bootstrap 就是当前比较流行的提供样式和JavaScript插件的前端开发工具包.但是开发人员在使用Booostrap中的插件时, 必须切换到JavaScript 模式来写 jQuery