Angularprovide的顺序问题。
创始人
2024-10-29 01:30:48
0

为Angular provide指定正确的顺序,并使用forwardRef来解决循环引用的问题。

Angular应用中,provide的顺序非常关键。如果Angular服务的提供者提前生成,那么所有依赖它的组件都将收到该服务实例的相同实例,即使它们自己也提供了服务。 这种问题可以通过指定提供程序的正确顺序来解决。在定义组件时,需要在其模块后面定义其provide。

示例代码:

// 定义服务 @Injectable() export class MyService {}

// 定义模块 @NgModule({ providers: [ MyService, { provide: SomeToken, useClass: SomeClass }, ... ] }) export class MyModule {}

// 定义组件 @Component({ selector: 'my-component', template:

MyComponent

, providers: [ { provide: SomeToken, useClass: SomeOtherClass }, MyService ] }) export class MyComponent {}

在上面的示例中,MyService必须在SomeToken和其他提供者之后定义,以确保其他提供者不会覆盖它。

如果服务之间存在循环依赖性,可以使用forwardRef来解决。

示例代码:

// 定义服务1 @Injectable() export class Service1 { constructor(@Inject(forwardRef(() => Service2)) private service2: Service2) {} }

// 定义服务2 @Injectable() export class Service2 { constructor(@Inject(forwardRef(() => Service1)) private service1: Service1) {} }

// 定义模块 @NgModule({ providers: [ Service1, Service2 ] }) export class MyModule {}

在上面的示例中,使用forwardRef来让Service1和Service2之间的循环依赖正确工作。

相关内容

热门资讯

透视能赢!哈糖大菠萝有挂吗5个... 透视能赢!哈糖大菠萝有挂吗5个常用方法,来玩德州破解器,解密教程(有挂介绍);1、起透看视 哈糖大菠...
透视中牌率!佛手在线有挂吗,e... 透视中牌率!佛手在线有挂吗,epoker免费透视脚本,介绍教程(有挂教程)一、epoker免费透视脚...
透视存在!pokemmo辅助脚... 透视存在!pokemmo辅助脚本,哈糖大菠萝挂,教你攻略(有挂技巧)1)pokemmo辅助脚本辅助挂...
透视科技!德州真人透视脚本,w... 透视科技!德州真人透视脚本,werplan怎么透视,黑科技教程(有挂详情)1、下载好德州真人透视脚本...
透视神器!约局吧德州透视,we... 透视神器!约局吧德州透视,werplan脚本,wpk教程(有挂技巧)1、游戏颠覆性的策略玩法,独创攻...
透视免费!哈糖大菠萝有挂吗5个... 透视免费!哈糖大菠萝有挂吗5个常用方法,菠萝德普辅助器免费版在哪里,规律教程(有挂方法)1)哈糖大菠...
透视透视挂!pokernow辅... 透视透视挂!pokernow辅助控制,哈糖大菠萝万能挂,专业教程(有挂详情)在进入哈糖大菠萝万能挂辅...
透视存在!线上德州的辅助器是什... 透视存在!线上德州的辅助器是什么,pokemmo脚本手机版,2025教程(有挂黑科技)1、线上德州的...
透视智能ai!哈糖大菠萝怎么挂... 透视智能ai!哈糖大菠萝怎么挂,pokerworld修改器,新2025教程(有挂工具)暗藏猫腻,小编...
透视工具!约局吧能不能开挂,菠... 透视工具!约局吧能不能开挂,菠萝辅助器免费版的功能介绍,2025教程(有挂技巧);1、每一步都需要思...