Angularusingaserviceinanoncomponentfile
创始人
2024-10-29 21:30:36
0

在Angular中,我们可以使用服务来组织可重用的代码。然而,在一些非组件文件中使用服务可能会引起问题。比如,在一个常量或者一个JavaScript模块中使用服务。直接注入这个服务是不可行的。以下是一种

首先,我们需要在我们想要使用服务的非组件文件中引入它:

import { MyService } from './path-to-my-service.service';

请注意,这里我们使用了相对路径来引入服务。

接下来,我们需要使用Angular的注入器来获取这个服务的一个实例。为此,我们需要在文件的顶部定义注入器:

import { Injector } from '@angular/core'; export let AppInjector: Injector;

export const setAppInjector = (injector: Injector) => { if (AppInjector) { console.error('AppInjector was already set'); } else { AppInjector = injector; } };

上面的代码中,我们定义了一个注入器AppInjector并暴露一个setAppInjector函数,使得我们可以在整个应用中共享注入器。

最后,在应用启动时,我们需要使用主模块中的一个注入器实例来设置AppInjector:

@NgModule({ imports: [ // ... ], declarations: [ // ... ], providers: [ // ... ], bootstrap: [AppComponent] }) export class AppModule { constructor(private injector: Injector) { setAppInjector(injector); } }

现在,我们就可以在非组件文件中使用MyService服务了:

const myService = AppInjector.get(MyService); myService.doSomething();

相关内容

热门资讯

黑科技了解(扑克时间)微扑克机... 黑科技了解(扑克时间)微扑克机器人切实是有挂!太无语了好像有挂(2024已更新)(哔哩哔哩)1、让任...
黑科技代打(Wepoke透明挂... 黑科技代打(Wepoke透明挂)nzt德州起初真的有挂!太离谱了起初有挂(2024已更新)(哔哩哔哩...
黑科技攻略(智星德州菠萝)aa... 您好,智星德州菠萝这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款...
黑科技了解(Wepoke必胜)... 黑科技了解(Wepoke必胜)epoker原本真的是有挂!太实锤了本来是有挂(2025已更新)(哔哩...
黑科技游戏(WPK私人房)传奇... 黑科技游戏(WPK私人房)传奇扑克总是有挂!太无语了从前是真的有挂(2020已更新)(哔哩哔哩);(...
黑科技安装(wpk猫腻)微扑克... 黑科技安装(wpk猫腻)微扑克游戏原来有挂!太坑了原先有挂(2020已更新)(哔哩哔哩);支持2-1...
黑科技肯定(Wepoke实锤)... 黑科技肯定(Wepoke实锤)wpk德州扑克素来存在有挂!太坑了总是是真的有挂(2024已更新)(哔...
黑科技脚本(德扑之星记分牌)w... 黑科技脚本(德扑之星记分牌)wEpoKe原本存在有挂!太离谱了其实是真的有挂(2020已更新)(哔哩...
黑科技辅助挂(Wepoke胜率... 黑科技辅助挂(Wepoke胜率)欢乐棋牌起初真的是有挂!太离谱了往昔真的是有挂(2021已更新)(哔...
黑科技插件(德扑输赢)云扑克c... 黑科技插件(德扑输赢)云扑克cloudpoker果然有挂!太嚣张了原先真的是有挂(2025已更新)(...