【发布时间】:2016-09-25 11:28:53
【问题描述】:
我有两个模块:
第一个:
@NgModule({
imports: [
BrowserModule,
FormsModule,
SharedModule.forRoot()
],
declarations: [
FirstComponent
],
bootstrap: [ FirstComponent ]
})
export class AppModule { }
第二个:
@NgModule({
imports: [
BrowserModule,
FormsModule,
SharedModule.forRoot()
],
declarations: [
ScndComponent
],
bootstrap: [ ScndComponent ]
})
export class AppModule { }
并与静态 .forRoot() 共享模块
@NgModule( {} )
export class SharedModule {
static forRoot() {
return {
ngModule : SharedModule,
providers : [DumyService]
}
}
}
我的 DumyServise 有一些 prop 'paramd',我想通过模块观察变化
@Injectable()
export class DumyService {
paramd : string;
}
在模块的两个组件(第一个和第二个)中我都有
private ds: DumyService
在构造函数中。
然后,假设我在第一个模块组件的某些组件中有一些 onclick 方法,它会改变
clickToChangeParam() {
this.ds.paramd = 'new value';
}
我想在两个模块中都进行此更改。 我该如何处理?
【问题讨论】:
-
为什么要拥有 2 个根模块?
-
因为我需要在我的应用程序的不同 dom 部分中使用单独的模块。而且我不知道,如果没有一些组件指令
我怎么能运行它 -
在 angular1 中,在 标签中有根组件更容易。在 A2 中,我看不到这种可能性。 A2 仅通过自定义指令运行。我错了吗?
-
对于那些在 2020 年仍在寻找答案的人,Angular 9 引入了 provideIn: 'platform' 服务,可以在两个根模块之间共享数据。仅供参考:stackoverflow.com/questions/61454317/…
标签: angular