当我们更新我们的应用程序以使用angular-ui-router v1.0.3时,我们遇到了一些打字稿定义的问题。 由于我们使用$ stateChangeSuccess事件,迁移指南告诉我们现在应该使用TransitionService.onSuccess
当所有内容都编译为js时,它工作正常,但问题是Typescript定义文件中不存在TransitionService(使用npm / @ types下载),在构建时给我们带来了麻烦。
https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/angular-ui-router
通过查看node_modules文件夹中的ui-router源文件夹,我可以看到已经存在源的打字稿定义文件。
angular-ui-router api TransitionService:https://ui-router.github.io/ng1/docs/latest/classes/transition.transitionservice.html。
答案 0 :(得分:10)
我找到了解决您问题的方法。 " $跃迁"具有TransitionService类型。
您可以从' @ uirouter / angularjs'导入TransitionService。在您的应用程序的任何.ts文件中。然后请使用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', '$state', '$stateParams', '$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";