【问题标题】:Why Angular export empty class in app.modules.ts?为什么 Angular 在 app.modules.ts 中导出空类?
【发布时间】:2017-06-02 13:14:33
【问题描述】:

我是 Angular 的新手,我正在使用 Angular 4,我使用 Angular CLI 通过ng new 命令制作了一个应用程序。

在 main.ts 中,我们有

 ...
import {AppModule} from './app/app.module';
 .
 .
platformBrowserDynamic().bootstrapModule(AppModule);

AppModule 在app/app.module 中定义(如您所见),这是我们在app.module.ts 中的内容:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

如您所见,export class AppModule { },它也用于platformBrowserDynamic().bootstrapModule(AppModule);

谁能帮我解释一下?

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    类的主体确实是空的。但是类上方的装饰器 (@NgModule) 正在为该类提供功能。所以真的,那个班级不是空的。在将装饰器应用于它之后,它不需要任何额外的逻辑。 bootstrapModule 将一个类作为输入,并假定该类用@NgModule 进行装饰,其配置方式类似于您所拥有的(声明、导入、提供程序等)。

    【讨论】:

    • 我认为你的答案不正确。根据您的回答,装饰器确实适用于模块类。如果是这样 - 我们不再需要使用类了。在这种情况下,Angular 框架开发人员不会强迫我们使用空类!但是:实际上我们仍然可以使用类。和主要问题“为什么?”。如何使用模块类?我相信@typescript-learner 就是这个意思。
    • @WebBrother 感谢您的想法和想法。为了澄清,我并不是在暗示该类需要为空。我在解释为​​什么问题中出现的代码 sn-p 中的类是空的。装饰器给你的类行为超出了你必须定义的范围。当然,您可以在装饰完成后自己添加更多内容。在很多情况下,人们不会发现自己这样做。运行时配置是一种例外情况。
    • 你能提供一个模块类不为空的例子吗?以及如何使用 ngModule 类的方法和属性?
    • @WebBrother 下面是在您的模块类之一中添加内容的示例:angular.io/guide/singleton-services#the-forroot-pattern
    猜你喜欢
    • 2020-07-22
    • 2018-01-16
    • 1970-01-01
    • 2015-06-14
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    相关资源
    最近更新 更多