在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. 【es6】Generator 函数

    1. 基本概念 状态机,封装了多个内部状态 2. 应用 返回一个遍历器对象. 3. 代码形式 function* helloWorldGenertor() { yield 'hello'; yield ...

  2. vsftpd for Anonymous Downloads on Ubuntu 16.04

    Introduction FTP, short for File Transfer Protocol, is a network protocol that was once widely used ...

  3. 求最大公约数和最大公倍数(Java算法)

    最大公约数(最大公因数):指某几个整数共有约数中最大的一个. 求两个整数最大公约数主要的方法: 列举法:各自列出约数,再找出最大的公约数. 素因数分解法:两数各作素因数分解,然后取出共有的项乘起来. ...

  4. 毕向东_Java基础视频教程第20天_IO流(1~4)

    第20天-01-IO流(File概述) File类: 用来将文件或者文件夹封装成对象, 方便进行操作. File对象可以作为参数, 传递给流对象的构造函数. 流对象不能操作文件夹; 流对象不能操作文件 ...

  5. Unity IOC/DI使用

    一.IOC介绍 IOC(Inversion of Control),中文译为控制反转,又称为“依赖注入”(DI =Dependence Injection) IOC的基本概念是:不创建对象,但是描述创 ...

  6. eclipse直接使用tomcat安装程序的webapp目录调试

    感谢此文:http://blog.csdn.net/soszou/article/details/23673133 本文很多技术及操作来源于此文 需求:因为微信方面的开发调试.为了测试方便,直接构建了 ...

  7. ‘ActiveX component can’t create object解决方法

    Event Type:    WarningEvent Source:    Health Service ScriptEvent Category:    NoneEvent ID:    1Dat ...

  8. C++ Primer(6) 模板和泛型编程(上)

    问题聚焦: 泛型编程是独立于变量类型的方式编写代码: 模板是泛型编程的基础. 本篇主要介绍模板的基础知识,包括:模板的定义和模板的实例化. 1 模版定义 必要性: Demo int compare(c ...

  9. calayer defaultValueForKey

    例如:我们新建一个SubLayer类继承自CALayer,则在SubLayer.m中重写此方法.如下: + (id)defaultValueForKey:(NSString *)key { if ([ ...

  10. 【【模板】严格次小生成树[BJWC2010]】

    树上的路径怎么能没有树剖 显然,次小生成树和最小生成树只在一条边上有差距,于是我们就可以枚举这一条边,将所有边加入最小生成树,之后再来从这些并不是那么小的生成树中找到那个最小的 我们往最小生成树里加入 ...