2017-05-23 4 views
3

angle-ui-router v1.0.3を使用するようにアプリケーションを更新したとき、タイプスクリプトの定義にいくつか問題がありました。 $ stateChangeSuccessイベントを使用していたので、移行ガイドではTransitionService.onSuccessを使用する必要があることがわかりました角度ui-routerタイプスクリプトの定義

すべてがjsにコンパイルされるとうまくいきますが、TransitionServiceがTypescript定義に存在しないという問題がありますファイル(npm/@ typesを使用してダウンロードされたもの)はビルド時に私たちに問題を起こします。 node_modulesフォルダ内のUI-ルーターソースフォルダを調べて

https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/angular-ui-router

私はすでにソースのtypescriptです定義ファイルが存在していることがわかります。

  1. @ types/angular-ui-routerのtypescript定義に、TransitionServiceがありませんか?
  2. ソースと一緒に提供されている定義ファイルを使用する必要がありますか? (もしそうなら、どのように?)
  3. 何か他の方法?

angle-ui-router api TransitionService:https://ui-router.github.io/ng1/docs/latest/classes/transition.transitionservice.html

+0

。私は '@ types'というものが古くなっていると思います。私たちはモジュールではなく、グローバルなコンテキストを使用していますので、 '@ uirouter/angularjs'の定義をインポートせずにどのように扱うべきか分かりません。周辺モジュールを宣言しているようではないためです。 – mrahhal

答えて

3

解決方法が見つかりました。 "$ transition"にはTransitionServiceのタイプがあります。

アプリケーションの任意の.tsファイルで '@ uirouter/angularjs'からTransitionServiceをインポートできます。次に、anglejsの依存性注入を使用してください。

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:https://ui-router.github.io/ng1/docs/latest/modules/injectables.html 同じように、注射されている:

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]) 

も、次のページで説明した他のサービスがあることを心に留めておいてください: '@ uirouter/angularjs'からインポートします。

例:同じ問題を持って

import { 
    StateService, TransitionService, Transition, UrlRouter, UrlMatcherFactory, 
    StateParams, StateRegistry, UIRouterGlobals, UIRouter, Trace, UrlService 
} from "@uirouter/core"; 
+0

これはモジュールを使用します。私はOPがアンビエント宣言を使用して彼のアプリを構築していると信じています。 – mrahhal

+0

あなたが示したようにTransitionServiceをインポートできました。それで私の問題は解決しました。ありがとう。 しかし、@mrahhalによると、アンビエント宣言を使用するときにはまだ問題があります。 – Jake

関連する問題