2017-05-23 1 views
3

angle-ui-router v1.0.3을 사용하도록 앱을 업데이트 할 때 타이프 스크립트 정의에 몇 가지 문제가 있습니다. 우리는 $ stateChangeSuccess 이벤트를 사용하고 있기 때문에 마이그레이션 가이드는 우리가 지금 TransitionService.onSuccess를 사용한다라고 우리에게 이야기각 - ui-router 타이프 스크립트 정의

모든 것이 잘 작동하지만 문제가 TransitionService는 타이프 정의에 존재하지 않는다는 것입니다 JS을 컴파일

파일 (npm/@ types을 사용하여 다운로드)을 사용하면 건물을 만들 때 문제가 발생합니다. node_modules 폴더 내의 UI 라우터의 소스 폴더를 검색하여

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

난 이미 소스 타이프 라이터 정의 파일이 존재하는 것을 볼 수 있습니다.

  1. @ types/angular-ui-router의 타이프 스크립트 정의에 TransitionService가 없습니다.
  2. 원본과 함께 제공된 정의 파일을 사용해야합니까? (그렇다면, 어떻게?)
  3. 다른 방법으로?

각-UI-라우터 API를 TransitionService : https://ui-router.github.io/ng1/docs/latest/classes/transition.transitionservice.html.

+0

. 나는'@ types'이 시대에 뒤떨어져 있다고 생각합니다. 우리는 모듈이 아닌 글로벌 컨텍스트를 사용하고 있으므로,'@ uirouter/angularjs'의 정의를 가져 오지 않고 작업하는 방법을 모릅니다. 이후 주변 모듈을 선언하는 것 같지 않습니다. – mrahhal

답변

3

문제점에 대한 해결책을 찾았습니다. "$ 전환"에는 TransitionService 유형이 있습니다.

응용 프로그램의 .ts 파일에서 '@ uirouter/angularjs'에서 TransitionService를 가져올 수 있습니다. 그렇다면 각도 의존성 주입을 사용하십시오.

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"; 
+0

이것은 모듈을 사용합니다. OP가 앰비언트 선언을 사용하여 앱을 제작하고 있다고 생각합니다. – mrahhal

+0

내가 보여준대로 TransitionService를 가져올 수있었습니다. 그래서 그것은 내 문제를 해결했다. 감사. 그러나 @mrahhal이 말했듯이 앰비언트 선언을 사용할 때 여전히 문제가됩니다. – Jake

관련 문제