Angular7中創(chuàng)建組件/自定義指令/管道的方法實例詳解
組件
使用命令創(chuàng)建組件
•創(chuàng)建組件的命令:ng generate component 組件名
•生成的組件組成: 組件名.html 、組件名.ts、組件名.less、組件名.spec.ts
•在組件的控制器
@Component({ selector: 'app-heroes', templateUrl: './heroes.component.html', styleUrls: ['./heroes.component.less'] })
手動創(chuàng)建組件
1.創(chuàng)建一個組件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 所導出的可聲明對象可用在當前模塊內(nèi)的模板中 imports: [....], // declarations:[ 組件 ] 屬于該模塊的一組組件、指令和管道(統(tǒng)稱可聲明對象)。 // 注意點:在這個源數(shù)據(jù)中只能聲明組件、管道、指令 declarations: [DinerBirthComponent], // 定義此 NgModule 中要編譯的組件集,這樣它們才可以動態(tài)加載到視圖中。 entryComponents: [....], // 導出的模塊 exports: [....] })
指令
認識指令
•說明:在 Angular 中有三種類型的指令: ◦1.組件 — 擁有模板的指令
◦2.結(jié)構(gòu)型指令 — 通過添加和移除 DOM 元素改變 DOM 布局的指令
◦3.屬性型指令 — 改變元素、組件或其它指令的外觀和行為的指令。
自定義指令
•創(chuàng)建自定義指令的命令: ng g d 目錄/指令名稱
•創(chuàng)建指令
1.創(chuàng)建指令的文件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 所導出的可聲明對象可用在當前模塊內(nèi)的模板中 imports: [], // declarations:[ 組件 ] 屬于該模塊的一組組件、指令和管道(統(tǒng)稱可聲明對象)。 // 注意點:在這個源數(shù)據(jù)中只能聲明組件、管道、指令 declarations: [DINER_COMPONENTS], // 定義此 NgModule 中要編譯的組件集,這樣它們才可以動態(tài)加載到視圖中。 entryComponents: [] })
1.在頁面中引用
<!-- 隱藏當前的這個標簽 --> <div class="form-group col-sm-6" dinerHidden> </div>
管道中的常用API
asyncPipe
•說明:async 管道會訂閱一個 Observable 或 Promise,并返回它發(fā)出的最近一個值。 當新值到來時,async 管道就會把該組件標記為需要進行變更檢測。當組件被銷毀時,async 管道就會自動取消訂閱,以消除潛在的內(nèi)存泄露問題。
CurrencyPipe
•說明:把數(shù)字轉(zhuǎn)換成金額字符串, 根據(jù)本地化規(guī)則進行格式化,這些規(guī)則會決定分組大小和分組分隔符、小數(shù)點字符以及其它與本地化環(huán)境有關(guān)的配置項。
DatePipe
•說明:把數(shù)字轉(zhuǎn)換成金額字符串, 根據(jù)本地化規(guī)則進行格式化,這些規(guī)則會決定分組大小和分組分隔符、小數(shù)點字符以及其它與本地化環(huán)境有關(guān)的配置項。
DecimalPipe
•說明:把數(shù)字轉(zhuǎn)換成字符串, 根據(jù)本地化規(guī)則進行格式化,這些規(guī)則會決定分組大小和分組分隔符、小數(shù)點字符以及其它與本地化環(huán)境有關(guān)的配置項。
自定義管道
•創(chuàng)建管道的命令:ng g pipe 目錄/管道名稱
•手動創(chuàng)建管道 •創(chuàng)建ts文件
import { Pipe, PipeTransform } from '@angular/core'; // 自定義管道 getGender @Pipe({ name: 'getGender' }) // 創(chuàng)建的管道的類 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 所導出的可聲明對象可用在當前模塊內(nèi)的模板中 imports: [...], // declarations:[ 組件 ] 屬于該模塊的一組組件、指令和管道(統(tǒng)稱可聲明對象)。 // 注意點:在這個源數(shù)據(jù)中只能聲明組件、管道、指令 declarations: [DINER_COMPONENTS], // 定義此 NgModule 中要編譯的組件集,這樣它們才可以動態(tài)加載到視圖中。 entryComponents: [...] })
•在頁面中引入使用
~ <!-- item.DGender的值為m和w,將對應的m轉(zhuǎn)為男,w轉(zhuǎn)為女 --> <td>{{item.DGender | getGender}}</td> ~
總結(jié)
以上所述是小編給大家介紹的Angular7中創(chuàng)建組件/自定義指令/管道的方法實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
關(guān)于AngularJS中ng-repeat不更新視圖的解決方法
今天小編就為大家分享一篇關(guān)于AngularJS中ng-repeat不更新視圖的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09AngularJS使用ng-class動態(tài)增減class樣式的方法示例
這篇文章主要介紹了AngularJS使用ng-class動態(tài)增減class樣式的方法,結(jié)合具體實例形式分析了ng-class操作頁面class樣式的相關(guān)技巧,需要的朋友可以參考下2017-05-05Angular跨字段驗證器中如何直接調(diào)用其它獨立的驗證器
我們在開發(fā)的時候都會用到表單,那么驗證器就是必不可少的東西,這篇文章主要給大家介紹了關(guān)于在Angular跨字段驗證器中如何直接調(diào)用其它獨立的驗證器的相關(guān)資料,需要的朋友可以參考下2022-03-03Angularjs實現(xiàn)控制器之間通信方式實例總結(jié)
這篇文章主要介紹了Angularjs實現(xiàn)控制器之間通信方式,結(jié)合實例形式總結(jié)分析了AngularJS控制器常用通信方式及相關(guān)操作注意事項,需要的朋友可以參考下2018-03-03