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 事件处理程序介绍
Jun 27 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
Dec 08 Javascript
深入探秘jquery瀑布流的实现
Jan 30 Javascript
jQuery Dialog 取消右上角删除按钮事件
Sep 07 Javascript
jquery easyui validatebox remote的使用详解
Nov 09 Javascript
vuejs 动态添加input框的实例讲解
Aug 24 Javascript
JavaScript原型链与继承操作实例总结
Aug 24 Javascript
深入浅析js原型链和vue构造函数
Oct 25 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
Element-UI 使用el-row 分栏布局的教程
Oct 26 Javascript
Nuxt.js 静态资源和打包的操作
Nov 06 Javascript
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
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
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP仿盗链代码
2012/06/03 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
php数据序列化测试实例详解
2017/08/12 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
js实现删除li标签一行内容
2019/04/16 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
使用Python的判断语句模拟三目运算
2015/04/24 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
java判断三位数的实例讲解
2019/06/10 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
电脑销售顾问自荐信
2014/01/29 职场文书
好人好事事迹材料
2014/02/12 职场文书
小班评语大全
2014/05/04 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
2014年人大工作总结
2014/12/10 职场文书
举起手来观后感
2015/06/09 职场文书
谢师宴学生致辞
2015/07/27 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
2019财务转正述职报告
2019/06/27 职场文书
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
Java设计模式中的命令模式
2022/04/28 Java/Android