app.module.ts 文件有什么用,我应该在里面做什么?

What does the app.module.ts file serve for, what should I do inside of it?

我正在习惯 Angular 2,但我有几个关于 app.module.ts 文件的问题。

例如:我 导入我的自定义管道,然后我必须再次将它导入我的 app.components.ts 文件

import { FirstPipePipe } from './first-pipe.pipe';

@NgModule({
     declarations: [
       AppComponent,
       SecondComponent,
       ThirdComponent,
       FirstComponent,
       FirstPipePipe
     ],
     imports: [
       BrowserModule, RouterModule.forRoot(appRoutes), HttpModule
     ],
     providers: [FetchDataService],
     bootstrap: [AppComponent]    })

然后我有

imports: [
           BrowserModule, RouterModule.forRoot(appRoutes), HttpModule
         ],

为什么我要导入一些 类 而另一些不能?

为什么提供者在这里,因为他们再次出现在 app.component.ts

providers: [FetchDataService]

基本上,我必须重写 app.component.ts 文件中的所有内容。

app.module.ts的目的是什么?

模块是一种组织和分离代码的方式。您可以拥有多个模块并延迟加载某些模块。

您将任何其他模块导入 imports 部分。

您在 declarations 中声明任何组件。在该模块的路由中使用的任何组件都必须在该模块中声明。如果组件在另一个模块中使用,那么您只将它们列在另一个模块中。

并且您在 providers 部分提供您的服务。

模块还有助于控制您的依赖注入...您可以 provide 在组件级别或模块级别提供服务。在模块级别提供服务会创建一个服务实例以在整个模块中共享。如果您在组件级别提供服务,那么它是该组件的唯一实例。最好只在一个级别提供服务以避免混淆 - 无论是在模块级别还是在组件级别(在您需要它的每个组件中)。我发现大多数时候,对我自己来说,只在模块级别提供服务是最好和最简单的。与 pipes 等相同,尽管您创建的任何 component/pipe 仍必须在 declarations.

中声明

app.module.ts的目的是什么?

  • 启动您的应用程序,并设置指向您的其他模块的链接。

1 - 模块是应用程序的逻辑层。每个模块都在那里进行逻辑打包,以便人们更容易理解和维护由多个模块组成的应用程序。 例如,如果你正在做一个丰富的应用程序,你应该有一个 LoginModule,一个 AuthenticationModule,等等...

2 - 您需要在您的模块中导入一些东西,以便 Angular 知道它将使用什么。基本上,您的 LoginModule 将需要 Angular FormModule,而 AuthenticationModule[=39] 可能不需要=]

3 - 这将我们带到这里:AppModule 因此应该只导入它链接到的其他模块,并提供服务全球将需要它。您未来的 LoginModule 不需要提供服务,但 AuthenticationModule 将有一个 AuthenticationService[=39] =] 很可能会。

这些是基本概念,请尝试阅读官方文档,其中提供了很多关于该主题的知识:https://angular.io/guide/ngmodule