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的一种模块模式
Mar 22 Javascript
javascript 新浪背投广告实现代码
Jul 07 Javascript
jquery each的几种常用的使用方法示例
Jan 21 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
Apr 20 Javascript
JavaScript采用递归算法计算阶乘实例
Aug 04 Javascript
移动手机APP手指滑动切换图片特效附源码下载
Nov 30 Javascript
详解javascript高级定时器
Dec 31 Javascript
js动态添加的DIV中的onclick事件简单实例
Jul 25 Javascript
Vue.js第四天学习笔记(组件)
Dec 02 Javascript
js css3实现图片拖拽效果
Mar 04 Javascript
Vue3如何理解ref toRef和toRefs的区别
Feb 18 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
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
python 常见的排序算法实现汇总
2020/08/21 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
会计系个人求职信范文分享
2013/12/20 职场文书
项目合作协议书范本
2014/04/16 职场文书
2014年行政部工作总结
2014/11/19 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
Python函数式编程中itertools模块详解
2021/09/15 Python
Python列表的索引与切片
2022/04/07 Python
服务器nginx权限被拒绝解决案例
2022/09/23 Servers