@NgModule实际上是什么?

man*_*har 9 ng-modules angular

我是Angle 2的新手。

什么是真正@NgModule角2?我通过角度通过官方文档。但是我并不清楚。

谁能帮我 ?

Ras*_*ash 9

随着应用程序开始变得越来越复杂,很明显所有应用程序都应该分为modules. 每个模块本身都是一个小型的迷你应用程序,但现在您可以将所有这些迷你应用程序捆绑在一起以构建更大的应用程序。

在此处输入图片说明

Angular 对创建模块的回答是@NgModule. 这是允许您创建模块的标签。angular 中的模块由我们不会讨论的其他东西组成componentsother module's components与之一起。

因此,假设您的应用程序有两个主要部分 - 愿望清单和购物车。您可以为每个模块创建模块 -WishlistModuleCartModule. 在 WishlistModule 中,您将拥有多个组件(装饰为 @NgComponent),例如显示项目、拖放项目等。 CartModule 也是如此。

要创建模块,您需要@NgModule像下面这样使用。

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { WishlistMainComponent }   from './wishlistMain.component';
import { WishlistShowComponent }   from './wishlistShow.component';
import { WishlistDragComponent }   from './wishlistDrag.component';
import { HeaderModule }   from './header.module';

@NgModule({
  imports:      [ 
    BrowserModule,
    HeaderModule
  ],
  declarations: [
    WishlistMainComponent, WishlistShowComponent, WishlistDragComponent
  ],
  bootstrap: [ WishlistMainComponent ]
})
export class WishlistModule { }
Run Code Online (Sandbox Code Playgroud)

正如其他答案已经指出的那样,@NgModule在幕后做了很多工作,但简单来说,它声明了一个模块。它有点像一个 Java 类,你在bootstrap选项中传递的任何东西都像 main() 方法。

一个模块(或@NgModule)本身只不过是一个包含一堆 的公文包components,实际上,组件实际上是您的应用程序的组成部分。一个组件定义了一个标签,例如<wishlist></wishlist>angular 把你所有的愿望清单代码放在那里。模块就是组件所在的地方,如果你想使用外部组件,那么你只能通过导入它的模块来实现,就像Java类和方法一样。


San*_*ket 1

@NgModule是 RC5 中添加的新装饰器,它为 Angular\xe2\x80\x99s 核心和开发人员人体工程学提供了许多有用的功能。

\n

NgModule 的基本用法如下所示:

\n
@NgModule({\n  imports: [ BrowserModule ],\n  declarations: [ MyComponent ],\n  bootstrap: [ MyComponent ]\n})\nclass MyAppModule {}\n
Run Code Online (Sandbox Code Playgroud)\n

这个装饰器告诉 Angular 关于您的应用程序的两个重要信息:

\n

声明告诉 Angular 它MyComponent属于MyAppModule.

\n

bootstrap建议 Angular 在启动时创建此模块时,我们希望自动引导MyComponent到 DOM。

\n