You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:09:38