Angular7中创建组件/自定义指令/管道的方法实例详解


Posted in Javascript onApril 02, 2019

组件

使用命令创建组件

•创建组件的命令:ng generate component 组件名
•生成的组件组成: 组件名.html 、组件名.ts、组件名.less、组件名.spec.ts
•在组件的控制器

@Component({
 selector: 'app-heroes',
 templateUrl: './heroes.component.html',
 styleUrls: ['./heroes.component.less']
})

手动创建组件

1.创建一个组件ts文件

2.在组件中设置

// 1. 导入包,按需导入
import { Component } from "@angular/core";
import { CoreEdit, NavLayoutComponent } from "@reco/core";
import { DinerService } from "../Service";

// 2.定义当前组件的修饰器
@Component({
 // 支出对外使用的名称
 selector: "diner-birth",
 // 使用的模板
 templateUrl: "./diner.birth.html"
})

// 导出使用的类
export class DinerBirthComponent extends CoreEdit {
 constructor(
 private _dinerService: DinerService,
 layout: NavLayoutComponent
 ) {
 super(_dinerService, 'diner-birth', layout);
 }
}

1.在index.ts文件中引入并导出

// 1. 导入
import { DinerBirthComponent } from "./diner.birth";

// 2. 导出
export { DinerBirthComponent }

// 3. 注册
@NgModule({
 // 这里列出的 NgModule 所导出的可声明对象可用在当前模块内的模板中
 imports: [....],

 // declarations:[ 组件 ] 属于该模块的一组组件、指令和管道(统称可声明对象)。
 // 注意点:在这个源数据中只能声明组件、管道、指令
 declarations: [DinerBirthComponent],

 // 定义此 NgModule 中要编译的组件集,这样它们才可以动态加载到视图中。
 entryComponents: [....],

 // 导出的模块
 exports: [....]
})

指令

认识指令

•说明:在 Angular 中有三种类型的指令: ◦1.组件 — 拥有模板的指令
◦2.结构型指令 — 通过添加和移除 DOM 元素改变 DOM 布局的指令
◦3.属性型指令 — 改变元素、组件或其它指令的外观和行为的指令。

自定义指令

•创建自定义指令的命令: ng g d 目录/指令名称

•创建指令

1.创建指令的文件ts文件

2.在指令文件中写

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

// 自定义指令
@Directive({
 selector: '[dinerHidden]'
})
// 导出指令的模块
export class DinerHiddenDirective {
 // el 代表当前的元素
 constructor(el: ElementRef) {
 // console.log()
 el.nativeElement.style.display = "none"
 }
}
1.在index.ts中将该指令导入到ngModule中
// 1.导入
import { DinerHiddenDirective } from "./diner.hidden";

// 2.导出
export const DINER_COMPONENTS: Provider[] = [ DinerHiddenDirective ];

// 3.ngModule中注册
@NgModule({
 // 这里列出的 NgModule 所导出的可声明对象可用在当前模块内的模板中
 imports: [],

 // declarations:[ 组件 ] 属于该模块的一组组件、指令和管道(统称可声明对象)。
 // 注意点:在这个源数据中只能声明组件、管道、指令
 declarations: [DINER_COMPONENTS],
 // 定义此 NgModule 中要编译的组件集,这样它们才可以动态加载到视图中。
 entryComponents: []
})

1.在页面中引用

<!-- 隐藏当前的这个标签 -->
 <div class="form-group col-sm-6" dinerHidden>
  
 </div>

管道中的常用API

asyncPipe

•说明:async 管道会订阅一个 Observable 或 Promise,并返回它发出的最近一个值。 当新值到来时,async 管道就会把该组件标记为需要进行变更检测。当组件被销毁时,async 管道就会自动取消订阅,以消除潜在的内存泄露问题。

CurrencyPipe

•说明:把数字转换成金额字符串, 根据本地化规则进行格式化,这些规则会决定分组大小和分组分隔符、小数点字符以及其它与本地化环境有关的配置项。

DatePipe

•说明:把数字转换成金额字符串, 根据本地化规则进行格式化,这些规则会决定分组大小和分组分隔符、小数点字符以及其它与本地化环境有关的配置项。

DecimalPipe

•说明:把数字转换成字符串, 根据本地化规则进行格式化,这些规则会决定分组大小和分组分隔符、小数点字符以及其它与本地化环境有关的配置项。

自定义管道

•创建管道的命令:ng g pipe 目录/管道名称

•手动创建管道 •创建ts文件

import { Pipe, PipeTransform } from '@angular/core';

// 自定义管道 getGender
@Pipe({
 name: 'getGender'
})

// 创建的管道的类
export class GenderPipe implements PipeTransform {
 transform(value: string, exponent: string) {
 if (value == ' ') return "未知"
 return value === 'm' ? "男" : "女"
 }
}

•将这个管道添加到NgModuel中

// 1. 先导入
import { GenderPipe } from "./diner.gender";

// 2.导出 
export const DINER_COMPONENTS: Provider[] = [GenderPipe];

// 3.添加到NgModule中的
@NgModule({
 // 这里列出的 NgModule 所导出的可声明对象可用在当前模块内的模板中
 imports: [...],

 // declarations:[ 组件 ] 属于该模块的一组组件、指令和管道(统称可声明对象)。
 // 注意点:在这个源数据中只能声明组件、管道、指令
 declarations: [DINER_COMPONENTS],
 // 定义此 NgModule 中要编译的组件集,这样它们才可以动态加载到视图中。
 entryComponents: [...]
})

•在页面中引入使用

~
<!-- item.DGender的值为m和w,将对应的m转为男,w转为女 -->
<td>{{item.DGender | getGender}}</td>
~

总结

以上所述是小编给大家介绍的Angular7中创建组件/自定义指令/管道的方法实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
如何用javascript控制上传文件的大小
Oct 26 Javascript
让Firefox支持event对象实现代码
Nov 07 Javascript
AJAX分页的代码(后台asp.net)
Feb 14 Javascript
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
javascript的 {} 语句块详解
Feb 27 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
js操作数据库实现注册和登陆的简单实例
May 26 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 Javascript
微信小程序 template模板详解及实例
Feb 21 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
Node.js中package.json中库的版本号(~和^)
Apr 02 #Javascript
基于Vue插入视频的2种方法小结
Apr 02 #Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
Apr 02 #Javascript
小程序实现自定义导航栏适配完美版
Apr 02 #Javascript
es6 symbol的实现方法示例
Apr 02 #Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 #Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 #Javascript
You might like
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php长字符串定义方法
2012/07/12 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
在html页面上拖放移动标签
2010/01/08 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
夜不归宿检讨书
2014/02/25 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
公司授权委托书
2014/10/17 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android