如何在UI-Router状态的onExit中为close()函数注入MyService服务?
如何在UI-Router的onExit函数中注入MyService?
嘿,我来帮你搞定这个问题!你现在用UIRouterModule.forChild配置路由时,想要把MyService注入到onExit对应的close()函数里,其实UI-Router的生命周期钩子(比如onExit、onEnter)支持和resolve类似的依赖注入语法,直接调整写法就行:
修改后的完整代码
import {MyComponent} from "../my.component"; import {MyService} from "../myservice"; export const myStates = [{ name: 'stateName1', params: { 'uid': null }, views: { 'stateName2' : { component : MyComponent } }, resolve: [ { token: 'data', deps: [MyService], resolveFn: resolveData } ], // 改成数组形式,将依赖服务放在前面,最后是钩子函数 onExit: [MyService, close] }]; // 函数参数接收注入的MyService实例 export function close(myService: MyService) { // 现在可以正常调用MyService的方法了 myService.someMethod(); } // 示例resolve函数(如果需要的话) function resolveData(myService: MyService) { // 你的resolve逻辑 }
简单说明
UI-Router的生命周期钩子支持依赖注入数组语法:
- 数组前几项是你需要注入的依赖(比如这里的
MyService) - 数组最后一项是钩子函数,函数的参数顺序要和前面的依赖一一对应
- Angular会自动把对应的服务实例注入到函数中,这样你就能在
close()里正常使用MyService的功能了
内容的提问来源于stack exchange,提问作者Valeriya Volynkina
相关产品推荐
相关产品推荐

