当我们更新我们的应用程序以使用angular-ui-router v1.0.3时,我们遇到了一些打字稿定义的问题.
由于我们使用$stateChangeSuccess事件,迁移指南告诉我们现在应该使用TransitionService.onSuccess
由于我们使用$stateChangeSuccess事件,迁移指南告诉我们现在应该使用TransitionService.onSuccess
当所有内容都编译成js时它工作正常,但问题是Typescript定义文件中不存在TransitionService(使用npm / @ types下载),在构建时给我们带来了麻烦.
https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/angular-ui-router
通过查看node_modules文件夹中的ui-router源文件夹,我可以看到已存在源的typescript定义文件.
>那么@ types / angular-ui-router的打字稿定义是否缺少TransitionService?
>或者我应该使用随源提供的定义文件? (如果是这样,怎么样?)
>其他一些方式?
angular-ui-router api TransitionService:https://ui-router.github.io/ng1/docs/latest/classes/transition.transitionservice.html.
解决方法
我找到了解决你问题的方法. “$transitions”具有TransitionService类型.
您可以在应用程序的任何.ts文件中从’@ uirouter / angularjs’导入TransitionService.然后请使用angularjs的依赖注入.
router.ts文件:
import { TransitionService } from '@uirouter/angularjs'; export class AppRouter { static inject = ['$rootScope','$state','$stateParams','$transitions']; constructor( $rootScope: any,$state: ng.ui.IStateProvider,$stateParams: ng.ui.IStateParamsService,$transitions: TransitionService ) { $rootScope.$state = $state; $rootScope.$stateParams = $stateParams; } }
app.ts:
angular // main module initialization and injecting third party modules .module(app,[ 'schemaForm','ui.router','base64','ng','ngMessages','angularMoment' ]) // angularjs configs .config(routesConfig) .run(['$rootScope','$transitions',AppRouter])
另请注意以下页面中描述的其他服务:https://ui-router.github.io/ng1/docs/latest/modules/injectables.html
可以以相同的方式注入:从’@ uirouter / angularjs’导入.
例:
import { StateService,TransitionService,Transition,UrlRouter,UrlMatcherFactory,StateParams,StateRegistry,UIRouterGlobals,UIRouter,Trace,UrlService } from "@uirouter/core";