認識Angular中的模組(NgModule)
文、意如老師
一、認識Angular中的模組(NgModule)
二、建立新模組
三、建立元件並註冊到自己所建立的模組內
3-1、在app.component.html 加入 mf1的功能
3-2、在mypage1元件 使用 mf1元件
一、認識Angular中的模組(NgModule)
在我們先前的介紹中,元件預設都綁在AppModule模組中,隨著元件越來越多,如都放置在同一個模組中,恐怕會造成專案不好維護,因此我們需要將模組有系統的分類,先複習一下,開啟src\app\app.module.ts,可以看到之前所建立的元件,預設都綁在這裡。
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img1](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image001-3.png?fit=800%2C458&ssl=1)
在NgModule中帶有一個@NgModule()裝飾器的類別也是一個函式(function),當中有幾個重要參數。
基本參數有:declarations [ ]、exports [ ]、imports [ ]、provider [ ]、bootstrap [ ]。
declarations[ ]:
宣告畫面(View)需要相關的元件(component)、指令(directives)、管道(pipes)。如果要用到該元件的功能,就必須匯入 import 包含他的模組。 例如:
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img2](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image003-4.png?fit=800%2C439&ssl=1)
exports:[]
決定哪些功能要公開給外部使用。
imports:[]
引入會使用到的模組。
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img3](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image005-4.png?fit=800%2C477&ssl=1)
providers:[]
給某元件下使用
bootstrap:[AppComponent]:
根元件(root component)
只有根模組才需要設定這個 bootstrap 屬性
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img4](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image007-4.png?fit=800%2C481&ssl=1)
二、建立新模組
建立新模組指令為:ng generate module [name]
也可以使用縮寫指令 :ng g m [name]
例如建立一個myfns的模組(Module),指令:ng g m myfns
此時會自動在src/app下建立myfns/myfns.module.ts檔案
如果元件要使用到這個模組就必須將它註冊到該元件所屬的模組內。
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img5](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image009-4.png?fit=800%2C403&ssl=1)
三、建立元件並註冊到自己所建立的模組內
在路徑src/app/myfns模組下建立三個元件(mf1, mf2, mf3)
建立元件指令:
ng g c myfns/mf1
ng g c myfns/mf2
ng g c myfns/mf3
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img6](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image011-4.png?fit=800%2C388&ssl=1)
開啟 src/app/myfns/myfns.module.ts 可以看到剛剛所建立的三個元件都已自動被註冊到 myfns模組中了。
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img7](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image013-4.png?fit=800%2C477&ssl=1)
3-1、在app.component.html 中加入 mf1元件的功能
開啟路徑:app-routing.module.ts增加myfn1Component的路由規則,path 屬性設定為 myfn1。
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img8](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/001-1.jpg?fit=800%2C201&ssl=1)
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img9](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image015-3.png?fit=800%2C449&ssl=1)
接下來就可以在src/app/ app.component.html的樣板中插入一個mf1Component 的連結。
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img10](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/002-1.jpg?fit=800%2C27&ssl=1)
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img11](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image017-2.png?fit=800%2C324&ssl=1)
最後將mf1Component所屬的模組(myfnsModule)註冊到AppModule內。
路徑:src/app/app.module.ts
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img12](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/003-1.jpg?fit=800%2C198&ssl=1)
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img13](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image018-1.png?fit=800%2C563&ssl=1)
再重新執行 ng serve –open就可以正常運作了。
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img14](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image020-1.png?fit=800%2C385&ssl=1)
任務3-2:在mypage1元件中使用mf元件
首先開啟src/app/myfns/myfns.module.ts,接下來需要將mf1Component設定到 myfnsModule 的 exports 內。
例:
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img15](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/004-1.jpg?fit=800%2C97&ssl=1)
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img16](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image022-1.png?fit=800%2C504&ssl=1)
將mf1Component的tag <app-mf1></app-mf1>
加到路徑:src\app\mypage1\mypage1.component.html 中即可。
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img17](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/005-1.jpg?fit=800%2C129&ssl=1)
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img18](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image024-1.png?fit=800%2C315&ssl=1)
在src/app/app.component.html中加入 /p1 路徑
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img19](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/006-1.jpg?fit=800%2C26&ssl=1)
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img20](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image026-1.png?fit=800%2C340&ssl=1)
重啟專案:ng serve –open
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img21](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image027.png?fit=800%2C542&ssl=1)
最後加上<p></p>段落標籤樣式後,可以更清楚的看到此頁其實就是兩個元件。
開啟路徑:src/styles.css
輸入以下樣式:
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img22](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/007-1.jpg?fit=800%2C128&ssl=1)
完成檔如下:
![[program-yiru-know-the-module-ngmodule-in-angular]for ai.rookiesavior lesson img23](https://i0.wp.com/rookiesavior.net/wp-content/uploads/2022/12/image029.png?fit=800%2C772&ssl=1)
我們已經了解了什麼是模組,也初步建立了模組,接下來就要開始介紹模板(template)語法,詳細介紹請參閱下一篇-認識Angular中的模板(Template)語法。
本文首圖圖片來源:Pexels

加入菜鳥救星學習會員,不定期獲得更多知識吧!點我註冊 / 登入
不同頻道,不同知識 !
影視與遊戲音效設計入門
占星學|星座行星分析-初階入門


