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 相关文章推荐
jquery获取焦点和失去焦点事件代码
Apr 21 Javascript
js控制web打印(局部打印)方法整理
May 29 Javascript
JS中如何设置readOnly的值
Dec 25 Javascript
js利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
js加载读取内容及显示与隐藏div示例
Feb 13 Javascript
js的image onload事件使用遇到的问题
Jul 15 Javascript
jquery显示隐藏input对象
Jul 21 Javascript
基于JavaScript实现类似于百度学术高级检索功能
Mar 02 Javascript
用js实现博客打赏功能
Oct 24 Javascript
JS实现十分钟倒计时代码实例
Oct 18 Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 Javascript
vue 在methods中调用mounted的实现操作
Aug 07 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
PHP新手上路(十)
2006/10/09 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
javascript时间差插件分享
2016/07/18 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
python获取糗百图片代码实例
2013/12/18 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Python八皇后问题解答过程详解
2019/07/29 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
keras 多任务多loss实例
2020/06/22 Python
keras K.function获取某层的输出操作
2020/06/29 Python
校本教研工作制度
2014/01/22 职场文书
自我评价的范文
2014/02/02 职场文书
利群广告词
2014/03/20 职场文书
五四演讲稿范文
2014/09/03 职场文书
教师节老师寄语
2015/05/28 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS