
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{ }
发表评论
最新留言
很好
[***.229.124.182]2025年03月27日 01时02分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C++ 子类对象直接赋值给父类对象可行,反过来不行
2019-03-06
linux下同一个动态库名为何辣么多的.so文件
2019-03-06
SQL联表的方式(逗号, Left Join, Right Join)
2019-03-06
牛客网输入输出举例
2019-03-06
字符串初始化时的注意点
2019-03-06
软考相关试题
2019-03-06
顺序表的操作
2019-03-06
常量表达式
2019-03-06
POD类型
2019-03-06
const与常量,傻傻分不清楚~
2019-03-06
Head First设计模式——迭代器模式
2019-03-06
MongoDB版本及存储引擎区别
2019-03-06
shell echo单行和多行文字定向写入到文件中
2019-03-06
AtCoder Beginner Contest 100 题解
2019-03-06
【数据结构】可持久化线段树初步
2019-03-06
后缀树
2019-03-06
Java高性能编程之CAS与ABA及解决方法
2019-03-06
从BIO到Netty的演变
2019-03-06
《算法导论》第二章笔记
2019-03-06
HTML节点操作
2019-03-06