javascript - 为什么 Angular 文档建议同时在模块和组件级别导入?

标签 javascript angular typescript import module

docs for reactive forms ,建议我将以下行添加到我的 app.module.ts

import { ReactiveFormsModule } from '@angular/forms';
...
@NgModule({ imports: [ ReactiveFormsModule, ... ], ... })
export class AppModule { }

然后,在a later section ,建议在我的 actual.component.ts 中也添加以下内容。

import { FormControl, FormGroup } from '@angular/forms';

我试图跳过模块部分,只在组件中导入内容,据我所知,这似乎有效。在我看来,如果我做相反的事情并添加模块部分,我就不必导入该模块的组件,这对我来说似乎是合理的。令我困惑的是模块部分和组件部分的组合。

我不明白这两个操作在一起的目的。他们为什么要这样做?

最佳答案

在模块级别导入允许您将该模块声明为模块的依赖项,因此能够在模板中使用其提供程序、指令、管道和其他内容。

在组件级别导入允许您在 typescript 代码中使用这些类。

进一步说明

在 Angular 导入模块中“合并”该模块,以便在编译模板时将模板元素(组件、指令和管道)识别为 Angular 元素。

在 typescript 和 javascript 中,为了使用在另一个文件或模块中声明的代码(类、函数、常量),您需要导入它,在 node 中,您使用 require() 函数,在 typescript 中,import from 表达式。

因此,如果您查看您的代码,您会发现您正在导入两个不同的东西,即模块和类,第一个是为了合并该模块,第二个是为了使用该类。\

更新

在 typescript 中可以有 index 文件,这些文件通常用于导出元素而不必深入到文件夹结构中,'@angular/forms' 的文件 em> 导出以下内容(除其他外):

export {AbstractControl, AbstractControlOptions, FormArray, FormControl, FormGroup} from './model';
export * from './form_providers';

form_providersFormsModuleReactiveFormsModule 的声明。

因此您可以从一个文件导入您的模块和类。

关于javascript - 为什么 Angular 文档建议同时在模块和组件级别导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50373545/

相关文章:

javascript - 使用 .animate() 将持续时间动画添加到 jQuery 悬停效果

javascript - 没有ivy如何编译库?

interface - 是否可以在接口(interface)定义中使用 getter/setter?

angular - 调用内部组件函数抛出未定义错误

angular - 使用 Angular 2 在受信任的 HTML 中运行脚本

angular - TinyMCE 编辑器右键粘贴不起作用

javascript - jQuery 动画边框插入元素。如何阻止它?

javascript - 地形图边缘不可见

javascript - 如何消除 Angular Controller 中的代码重复?

angular - 极简主义 Angular2 设置