在angular7中创建组件/自定义指令/管道

组件

使用命令创建组件

  • 创建组件的命令: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 目录/管道名称

  • 手动创建管道

    1. 创建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' ? "男" : "女"
    }
    }
    1. 将这个管道添加到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: [...]
    })
    1. 在页面中引入使用
    ~
    <!-- item.DGender的值为m和w,将对应的m转为男,w转为女 -->
    <td>{{item.DGender | getGender}}</td>
    ~

在angular7中创建组件/自定义指令/管道的更多相关文章

  1. 怎么在java中创建一个自定义的collector

    目录 简介 Collector介绍 自定义Collector 总结 怎么在java中创建一个自定义的collector 简介 在之前的java collectors文章里面,我们讲到了stream的c ...

  2. 前端笔记之Vue(三)生命周期&CSS预处理&全局组件&自定义指令

    一.Vue的生命周期 生命周期就是指一个对象的生老病死的过程. 用Vue框架,熟悉它的生命周期可以让开发更好的进行. 所有的生命周期钩子自动绑定 this 上下文到实例中,因此你可以访问数据,对属性和 ...

  3. angularJS中如何写自定义指令

    指令定义 对于指令,可以把它简单的理解成在特定DOM元素上运行的函数,指令可以扩展这个元素的功能 例如,ng-click可以让一个元素能够监听click事件,并在接收到事件的时候执行angularJS ...

  4. React中创建组件的3种方式

    目前作者所知道的创建react组件的方式有三种: 函数式定义(无状态组件) function MyComponent(props){ return( <h1>mycomponent< ...

  5. react中创建组件

    第1种 - 创建组件的方式 > 使用构造函数来创建组件,如果要接收外界传递的数据,需要在 构造函数的参数列表中使用`props`来接收:> 必须要向外return一个合法的JSX创建的虚拟 ...

  6. Vue_(组件)自定义指令

    Vue.js自定义指令 传送门 自定义指令:除了内置指令,Vue也允许用户自定义指令 注册指令:通过全局API Vue.directive可以注册自定义指令 自定义指令的钩子函数参数:自定义指令的钩子 ...

  7. ng-repeat里创建的自定义指令

    在ng里,所有的指令在按照意愿正常工作之前的都需要编译一下,包含angularJS的自定义指令. ng模板里的所有指令都会在angularJS加载完毕之后编译一下,所以那些自定义指令和事件才能工作. ...

  8. react中创建组件以及使用

    组件基本使用import React, { Component } from 'react'; // 在组件头部引用 class Home extends Component { // 创建类 ren ...

  9. 002——Angular 目录结构分析、app.module.ts 详解、以及 Angular 中创建组件、组件 详解、 绑定数据

    一.目录结构分析 二. app.module.ts.组件分析 1.app.module.ts 定义 AppModule,这个根模块会告诉 Angular 如何组装该应用. 目前,它只声明了 AppCo ...

随机推荐

  1. js获取日期:昨天今天和明天、后天 [转贴记录]

    <html> <head> <meta http-equiv="Content-Type" content="textml; charset ...

  2. vuex入门教程和思考 [转] 里面有几个实例

    Vuex基础概念 vuex中涉及的概念主要有下面几点,下面做个简单的介绍和理解. Vuex 官方文档:https://vuex.vuejs.org/zh-cn/ 官网有介绍,也有个demo shopp ...

  3. Android学习笔记(4)----Rendering Problems(The graphics preview in the layout editor may not be accurate)

    在Android Studio中新建了一个 setting.xml 文件,布局好文件后,从 Text 界面切换到 Design 界面,显示了如下错误: 网上搜寻 The graphics previe ...

  4. 仿小米便签图文混排 EditText解决尾部插入文字bug

    一直想实现像小米便签那样的图文混排效果,收集网上的办法无非三种: 1.自定义布局,每张图片是一个ImageView,插入图片后插入EditText,缺点是实现复杂,不能像小米便签那样同时选中图片和文字 ...

  5. Mybatis学习第二天——mapper的动态代理

    传统的Dao层开发通过接口与实现类的方式,Mybatis中通过mapper动态代理是需要定义接口. 1.传统Dao层封装 那么可以将公共资源提取出来,剩余的封装成方法来实现.下面是UserDaoImp ...

  6. linux 服务器 keras 深度学习环境搭建

    感慨: 程序跑不起来,都是环境问题. 1. 安装Anaconda https://blog.csdn.net/gdkyxy2013/article/details/79463859 2. 在 Anac ...

  7. 使用wm_concat函数导致字符串过长

    场景:使用select wm_concat(xxxxx) from table 的时候 返回的字符串过长 解决方案 :使用to_clob 将字符串转成 clob类型,但是由于使用的前端框架不能解析cl ...

  8. notepad 操作总结

    1.竖向选择 先把鼠标光标放在起始位置,然后同时按 Alt+Ctrl 或Alt+shift键,然后移动鼠标选取内容. Word中只能用Alt+Shift .

  9. Java Spring中@Query中使用JPQL LIKE 写法

    两种方式 // 一 public List<TestEntity> searchByJpql(){ String jpql = "select k from TestEntity ...

  10. Spark 2.x 中 Sort-Based Shuffle 产生的内幕

    本课主题 Sorted-Based Shuffle 的诞生和介绍 Shuffle 中六大令人费解的问题 Sorted-Based Shuffle 的排序和源码鉴赏 Shuffle 在运行时的内存管理 ...