Angular-ui-router typescript定义

时间:2017-05-23 11:09:55

标签: angularjs typescript angular-ui-router

当我们更新我们的应用程序以使用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源文件夹,我可以看到已经存在源的打字稿定义文件。

  1. @ types / angular-ui-router的打字稿定义是否缺少TransitionService?
  2. 或者我应该使用随源提供的定义文件? (如果是这样,怎么样?)
  3. 其他一些方式?
  4. angular-ui-router api TransitionService:https://ui-router.github.io/ng1/docs/latest/classes/transition.transitionservice.html

1 个答案:

答案 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";