Angularjs Angular2 upgradeAdapter不使用$rootScope、$state等

Angularjs Angular2 upgradeAdapter不使用$rootScope、$state等,angularjs,typescript,angular,upgrade,Angularjs,Typescript,Angular,Upgrade,我试图在Angular2的upgradeAdapter的帮助下升级Angular1应用程序。该应用程序是用upgradeAdapter引导的,并按预期工作,至少只要我不尝试升级A1的集成服务之一 假设我用typescript编写了A1服务: //A1.ts // inject decorator that in short does target.$inject = ...injects @Inject('$rootScope') class TestService{ construct

我试图在Angular2的upgradeAdapter的帮助下升级Angular1应用程序。该应用程序是用upgradeAdapter引导的,并按预期工作,至少只要我不尝试升级A1的集成服务之一

假设我用typescript编写了A1服务:

//A1.ts
// inject decorator that in short does target.$inject = ...injects
@Inject('$rootScope')
class TestService{
    constructor($rootScope: angular.IRootScopeService){
        //$rootScope.whatever();
    }
} 
// register the service in application module
globalModule.service('TestService', TestService);
我可以在任何需要的地方以正常的A1方式注入TestService,而且它可以工作

现在,对于A2升级,我会:

//upgradeAdapter.ts
import {UpgradeAdapter} from 'angular2/upgrade';
const upgradeAdapter = new UpgradeAdapter();
export default upgradeAdapter;

//A2.ts
import upgradeAdapter from './upgradeAdapter'
import { Injectable, Inject} from 'angular2/core'

@Injectable()
export class A2TestService{
    constructor(@Inject('$rootScope') _rootScope: angular.IRootScope){
        //_rootScope.whatever()
    }
}

upgradeAdapter.upgradeNG1Provider('$rootScope');
// tried with additional upgradeAdapter.upgradeNG1Provider('$rootScopeProvider');
upgradeAdapter.addProvider(A2TestService);
// make this service available in A1 World
globalModule.service('A2TestService',upgradeAdapter.downgradeNG2Provider(A2TestService));
使用此公式升级时,混合DI可以工作,只要我不使用,例如上面提到的
$rootScope
。 那我就要

"Error during instantiation of $rootScope!  (A2TestService -> $rootScope)
Stacktrace: Type Error: Cannot read property 'get' of null 
 at provider.push.core_1.provide.useFactory (upgrade.js: 684)
..."
来自angular2.js(beta.9版)

我的选择是什么