在angular7中建立組件/自定義指令/管道

在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 目錄/指令名稱html

  • 建立指令
  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 目錄/管道名稱api

  • 手動建立管道
    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>
    ~
相關文章
相關標籤/搜索