允许组件及其子组件在service中访问ngModel的单个实例
Angular2 Allow Components and its Sub Components to access single instance of ngModel in service
我正在构建具有许多功能的复杂视图。为了保持条理,我将其分解为几个自定义组件。
我会尽量保持这个简短,因为我确实有它的工作,但我不能想象这是"正确的方式"。
结构:
- AppComponent(has binding to dataModel)
--LayoutComponent
---HeaderComponent
---SideMenuComponent
---MainContentComponent
我需要能够让这些组件访问数据模型的相同单个实例。但是,当我将服务作为提供者添加到每个组件的构造函数中时,它会生成一个新的数据实例。因此,在一个组件中所做的编辑不会反映在另一个组件的数据中。
所以我所做的是给最上面的父AppComponent
组件访问数据模型,然后通过模板[(dataModel)]="dataModel"
传递它的链。
然后在每个组件中我添加了一个dataModel
变量,该变量开始为null,但在构建模板后,我将其绑定到该局部变量。
这样做是因为我可以将每个组件中的输入绑定到相同的字段,即datmodel .name,当我更新它时,所有组件都会反映更改。
这看起来不像是一个干净的方法。
如果你将服务添加到每个组件的提供者中,每个组件都会获得自己的服务实例。Angular2的DI为每个提供商维护一个实例。
如果你把它添加到注释祖先的提供者中,那么这个组件和所有的后代都从这个提供者获得一个实例。
In>= RC.5如果你将服务添加到@NgModule(...)
的providers: [...]
中,如果不是惰性加载的,它将作为提供商添加到根注入器中,从而与整个应用程序共享(只要任何后代组件也将它作为提供商,并在其后代中覆盖它)。
对于惰性加载模块,提供程序在这个惰性加载模块中被共享,因为惰性加载模块有自己的DI子作用域。
相关文章:
- 从vuejs中的组件模板访问父方法
- 回流:让多个组件访问同一个Store
- 访问vue组件中的ID标记
- Angular 2-如何从ControlGroup访问子组件
- 如何从Vue.js中的子组件访问父方法
- 访问Vuejs组件内部的元素
- 访问要在 React Native Text 组件中显示的对象数组
- 如何从一个组件访问另一个组件的状态
- 对自定义组件中的本地访问引用进行反应
- 动态添加子组件值时,如何从父组件访问这些值
- 如何访问Vue.js中深度嵌套的子组件中的数据
- 每次加载页面时,火狐附加组件访问变量
- React.js:从独立组件访问整个应用程序状态
- Vue.js从子组件访问父/根数据
- 从另一个组件访问函数内的React组件
- ReactJS:从基本组件访问上下文
- 从深度嵌套的组件访问redux分派
- 从子组件访问父组件/属性
- 可以't从子组件访问状态
- 从react组件访问环境变量