angular2里forRoot的作用
发布日期:2021-05-08 10:59:55 浏览次数:18 分类:精选文章

本文共 885 字,大约阅读时间需要 2 分钟。

模块A是这样定义的

@NgModule({        providers: [AService],    declarations: [ TitleComponent ],    exports:      [ TitleComponent ],})export class A {   }

如果有惰性模块lazyModule(子模块)导入模块A,那么子注入器将生成一个AService实例,也就是说如果有多个子模块,那么就会产生多个AService实例

这时如果想将AService变成全局唯一的,那么在lazyModule导入的时候就不要导入providers而只导入TitleComponent

forRoot这时就有用武之地了

1)改写A实现:

通过forRoot语法,提供一个static (静态)的对象,static是全局的意思(参考typescript的static 语法),这样 providers(providers作用是定义注入一个对象实例,支持同时声明多个组件,数组形式)属性标记的AService实例也自动是全局的。

@NgModule({        providers: [],    declarations: [ TitleComponent ],    exports:      [ TitleComponent ],})export class A {      static forRoot() {           return {   ngModule: A, providers: [AService]};   }}

2)改写引用代码

2.1 在appModule (根模块)中使用A.forRoot导入A模块

@NgModule({     imports: [A.forRoot()]})export class AppModule {   }

在lazyModule(子模块)中正常导入A模块

@NgModule({     imports: [A]})export class LazyModule{   }
上一篇:Angular2 知识笔记(1) 特性模块
下一篇:firefox中angular2嵌套发送请求问题

发表评论

最新留言

很好
[***.229.124.182]2025年03月27日 01时02分24秒