我正在做一个有角度的项目,并且已经制作了所需的组件和导入的模块。我在这里看到的主要问题...是我们执行2个步骤:
有一个例外。现在,我希望就像“ 浏览器模块”(预提取)或“表单模块”(手动添加)一样,在步骤2(即装饰器数组)中应该有“ ng-Module ”的注入或名称添加。为什么不在那里?这是唯一的例外,还是还有其他例外?难道不应该在装饰器中添加“ ngModule”吗?
注意:由于应用正常运行,因此不需要代码。问题很简单,如果我们对所有人使用特定规则- 组件,服务,模块,管道,模型和接口-为什么不 为“ ngModule”?
答案 0 :(得分:1)
NgModule是由@NgModule装饰器标记的类。它不是在应用程序中配置的单独模块。
答案 1 :(得分:1)
这是必需的,因为在模块定义时使用了@NgModule
装饰器。它只是一个装饰器,而不是一个模块。您需要导入其脚本,因为只需使用它即可。您可以将其视为@Input
或@Output
装饰器。您将它们导入到组件中只是为了在组件中使用。
您可以查看code of NgModule
这是一个界面
export interface NgModule { ...
但是,BrowserModule
是一个用@NgModule
装饰自己的模块
检查code
@NgModule({providers: BROWSER_MODULE_PROVIDERS, exports: [CommonModule, ApplicationModule]})
export class BrowserModule { ...
答案 2 :(得分:1)
AOT编译器包含两个阶段。
在代码分析阶段,借助@ngModule类装饰器,AOT编译器将获取有关模块的元数据。使用这些详细信息,它将为编译创建metadata.json。
在代码生成阶段,它将创建模块工厂。