Javascript 为什么Angular docs建议同时在模块和组件级别导入?

Javascript 为什么Angular docs建议同时在模块和组件级别导入?,javascript,angular,typescript,import,module,Javascript,Angular,Typescript,Import,Module,在中,建议我在app.module.ts中添加以下行 然后,在中,建议在我的actual.component.ts中添加以下内容 我试图跳过模块部分,只导入组件中的内容,据我所知,这似乎是可行的。在我看来,如果我做相反的事情并添加模块部分,我就不必导入该模块的组件,这是合理的。让我困惑的是模块部分和组件部分的结合 我不明白这两次行动的目的是什么。为什么要这样做?在模块级导入允许您将该模块声明为模块的依赖项,从而能够在模板中使用其提供程序、指令、管道和其他内容 在组件级别导入允许您在typescr

在中,建议我在app.module.ts中添加以下行

然后,在中,建议在我的actual.component.ts中添加以下内容

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


我不明白这两次行动的目的是什么。为什么要这样做?

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

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

进一步解释

在角度导入中,模块会合并该模块,以便在编译模板时将模板元素、组件、指令和管道识别为角度元素

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

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

更新

在typescript中,可以使用通常用于导出元素的索引文件,而不必深入文件夹结构,“@angular/forms”的文件导出以下内容:

export {AbstractControl, AbstractControlOptions, FormArray, FormControl, FormGroup} from './model';
export * from './form_providers';
其中,表单提供程序具有FormsModule和ReactiveFormsModule的声明


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

在模块级导入允许您将该模块声明为模块的依赖项,从而可以在模板中使用其提供程序、指令、管道和其他内容

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

进一步解释

在角度导入中,模块会合并该模块,以便在编译模板时将模板元素、组件、指令和管道识别为角度元素

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

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

更新

在typescript中,可以使用通常用于导出元素的索引文件,而不必深入文件夹结构,“@angular/forms”的文件导出以下内容:

export {AbstractControl, AbstractControlOptions, FormArray, FormControl, FormGroup} from './model';
export * from './form_providers';
其中,表单提供程序具有FormsModule和ReactiveFormsModule的声明

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

简单地说:

导入模块允许您使用模块的功能。被动表单允许您使用FormBuilder创建包含FormControls的FormGroup

导入组件中的功能允许您使用这些功能。如果不这样做,IDE将不知道FormGroup或FormControl的含义

它可能在不导入功能的情况下工作,因为它们已加载到捆绑包中,但如果您尝试在不导入功能的情况下构建应用程序,则会抛出错误

此外,还需要导入要使用其功能的模块。在Angular中,模块不会从其父模块继承,因此如果您以过高的级别导入模块,您将无法访问它

简单地说:

导入模块允许您使用模块的功能。被动表单允许您使用FormBuilder创建包含FormControls的FormGroup

导入组件中的功能允许您使用这些功能。如果不这样做,IDE将不知道FormGroup或FormControl的含义

它可能在不导入功能的情况下工作,因为它们已加载到捆绑包中,但如果您尝试在不导入功能的情况下构建应用程序,则会抛出错误


此外,还需要导入要使用其功能的模块。在Angular中,模块不会从其父模块继承,因此如果您以过高的级别导入模块,您将无法访问它

是的,但这并不能真正回答我的问题。这不是关于提供者、管道等,而是关于他们示例中的模块。是贝恩
g添加到应用程序的根模块中,所以它也不意味着要导入到其他东西中。请详细说明。是的,但这并不能真正回答我的问题。这不是关于提供者、管道等,而是关于他们示例中的模块。它也被添加到应用程序的根模块中,所以它也不能被导入到其他东西中。请详细说明。
export {AbstractControl, AbstractControlOptions, FormArray, FormControl, FormGroup} from './model';
export * from './form_providers';