加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 06:50:06 所属栏目:安全 来源:网络整理
导读:在angular7中创建组件/自定义指令/管道 组件 使用命令创建组件 创建组件的命令:ng generate component 组件名 生成的组件组成: 组件名.html 、组件名.ts、组件名.less、组件名.spec.ts 在组件的控制器 @Component({ selector: 'app-heroes',templateUrl: '

在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: [...],// 定义此 NgModule 中要编译的组件集,这样它们才可以动态加载到视图中。
        entryComponents: [...]
    })
    1. 在页面中引入使用
    ~
    <!-- item.DGender的值为m和w,将对应的m转为男,w转为女 -->
    <td>{{item.DGender | getGender}}</td>
    ~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读