我正在嘗試玩Angular2,當我將基本代碼升級到Angular 2.0.0-RC5時,我發現引入了一個重大更改,@NgModule,這相當於角度。 moulle() in Angularjs 1.x?對Angular 2中提供的@NgModule感到困惑
對於我來說,@ngModule使事情變得複雜。
當我使用Angular 1.x時,在社區中有一些關於angular.module的抱怨,因爲存在一些javascript模塊系統。
默認情況下,角-CLI產生的代碼是基於SystemJS,我們可以使用Typescirpt組織的源代碼的結構。
我們爲什麼需要@NgModule,它是在應用程序運行時組織的一個邏輯視圖?
我假定一個@NgModule被指定用於基於模塊架構爲Angular2和@ngModule可以在不同的應用中重複使用。與過去幾年中使用的其他基於模塊/包/插件的框架相比。它缺乏一些功能。
- @NgModule提供導入/導出功能,但如何導入模塊,而不打字稿進口條款,並拒絕其他@NgModule導入@NgModule私有組件/管材/服務。
- 沒有@NgModule的路由前綴,想象一下,由3party團隊維護@NgModule。例如。一個共同的評論模塊的任何基於帖子的應用程序,如何避免路由衝突,如何覆蓋路由定義,如何在主機@NgModule中配置@ngModule?
爲什麼路由配置由RouteModule.forRoot()(或forChild)註冊而不是路由 @NgModule註釋的屬性是這樣的。
@NgModule(route:{prefix:'/comment', config: commentRouteConfigs}) export class CommentModule{}
目前,@NgModule API耦合路徑CONFIGS。
如何覆蓋在@NgModule定義,當我一個主機模塊中導入了一個模塊組件的模板。
- 如何掛鉤@ngModule生命週期(mout/unmout或加載/卸載等,我無法在Angular文檔中找到desc),以及如何在組件/管道/服務之間共享數據狀態, ngModule內部?
- 如果可能將@NgModule設計爲可選功能,或者如果我們不明確聲明@ngModule,則默認情況下爲應用程序使用隱式@ngModule。
謝謝。
好問題,特別是如何使用第三方模塊而不會互相干擾的部分。我還添加了一個類似的問題 - http://stackoverflow.com/q/39010439/1303917 - 在我看來,'@ NgModule'比解耦更耦合。如何在不收集'@ NgModule'的所有依賴關係的情況下單獨使用它們。 – Yves
只要檢查這篇文章 - https://angular.io/docs/ts/latest/guide/ngmodule.html - 如果你不知道它已經。感謝回答我的問題的@mxii。 – Yves
@Yves儘管如此,我現在很享受Angular,我的所有路由規則都在一個獨立的sidecar'NgModule'中註冊到特徵模塊中。 – Hantsy