声明,提供者和导入在NgModule之间有什么区别
我想了解angularjs-2,然后我碰到@Module
- import
- 声明
- 供应商
在Angularjs-2快速启动之后
angular度的概念
-
imports
使当前模块中的其他模块的导出声明可用 -
declarations
是使当前模块的指令(包括组件和pipe道)可用于当前模块中的其他指令。 指令,组件或pipe道的select符只有在声明或导入时才与HTML相匹配。 -
providers
将为DI提供服务和价值。 它们被添加到根作用域中,并被注入到其他服务或指令中,这些服务或指令具有依赖性。
对于providers
一个特殊情况是懒加载的模块,它们有自己的子注入器。 只有延迟加载模块的提供者才会默认提供给这个延迟加载的模块(而不是像其他模块一样)。
有关模块的更多细节,请参阅https://angular.io/docs/ts/latest/guide/ngmodule.html
-
exports
使组件,指令和pipe道可用于将此模块添加到imports
模块中。exports
也可用于重新导出CommonModule和FormsModule等模块,这些模块通常在共享模块中完成。 -
entryComponents
注册用于离线编译的组件,以便它们可以与ViewContainerRef.createComponent()
一起使用。 在路由器configuration中使用的组件是隐式添加的。
TypeScript导入
import ... from 'foo/bar'
index.ts
import ... from 'foo/bar'
( 可能会parsing为index.ts
)用于TypeScript导入。 每当在另一个打字稿文件中声明的打字稿文件中使用标识符时,都需要这些标记。
Angular的@NgModule()
imports
和TypeScript import
是完全不同的概念 。
imports
:用于导入支持模块,如FormsModule,RouterModule,CommonModule或任何其他定制function模块。
declarations
:用于声明属于当前模块的组件,指令,pipe道。 声明内的所有内容都相互认识。 例如,如果我们有一个组件,说UsernameComponent,显示用户名的列表,我们也有一个pipe道,说toupperPipe,它将string转换为大写字母的string。 现在,如果我们想在UsernameComponent中以大写字母显示用户名,我们可以使用我们之前创build的toupperPipe,但是UsernameComponent如何知道toupperPipe存在,以及如何访问和使用它,这里是声明,我们可以声明UsernameComponent和toupperPipe。
Providers
:用于在模块中注入组件,指令,pipe道所需的服务。
请在此处详细阅读: https : //angular.io/docs/ts/latest/guide/ngmodule.html