NgModule中的Declarations、Providers和Imports之间有什么区别
让我们首先讨论一下这些术语。
- Declarations:
- 声明是用来声明属于当前模块的组件、指令、管道。
- 声明内的一切都相互认识。
- 声明是用来使当前模块中的指令(包括组件和管道)对当前模块中的其他指令可用。
- 指令、组件或管道的选择器只有在它们被声明或导入时才会与HTML匹配。
- Providers:
- 提供者是用来使服务和价值为依赖性注入所了解。
- 它们被添加到根作用域中,并被注入到其他以它们为依赖关系的服务或指令中。
- Imports:
- Imports使其他模块的出口声明在当前模块中可用。
- 它用于导入支持模块,如FormsModule, RouterModule, CommonModule等。
区别:
Declarations | Providers | Imports |
---|---|---|
声明是用来做指令的。 | 提供者用于制作服务。 | Imports使其他模块的出口声明在当前模块中可用。 |
用来声明属于当前模块的组件、指令、管道。 | 用于在我们的模块中注入组件、指令和管道所需的服务。 | 用于导入支持模块,如FormsModule、RouterModule等。 |
应用组件。 | StateService | BrowserModule |
Declarations
Providers
Imports
一个例子,其中使用了所有三个Declarations,Imports和Providers。
本项目中使用的提供者是名为UserService的自定义服务。
user.service.ts
这个UserService被用作app.module.ts中的提供者。
app.module.ts
app.component.html
输出: