使用 Angular 5.0,升级模块现在可以选择使用 downgradeModule,它在 angular 区域之外运行 angularjs。在对此进行试验时,我遇到了使用 downgradeInjectable 的问题。
我收到错误:
未捕获的错误:在引导 Angular 模块之前尝试获取 Angular 注入器。
在 Angular js 中引导 Angular 工作正常
import 'zone.js/dist/zone.js';
import * as angular from 'angular';
/**
* Angular bootstrapping
*/
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { decorateModuleRef } from 'src/environment';
import { AppModule } from 'src/app/app.module';
import { downgradeModule } from '@angular/upgrade/static';
export const bootstrapFn = ( extraProviders ) => {
const platformRef = platformBrowserDynamic( extraProviders );
return platformRef
.bootstrapModule( AppModule )
.then( decorateModuleRef );
};
angular.module( 'app.bootstrap', [
downgradeModule( bootstrapFn ),
] );
然而...
由于在初始化 angularjs 之后进行引导,我无法再让降级注入工作。
服务要降级
import { Injectable, Inject, OnInit } from '@angular/core';
@Injectable()
export class MobileService implements OnInit{
constructor(
@Inject( 'angularjsDependency1' ) public angularjsDependency1 : any,
@Inject( 'angularjsDependency2' ) public angularjsDependency2 : any,
) {}
}
降级注射尝试
import * as angular from 'angular';
import { downgradeInjectable } from '@angular/upgrade/static';
import { MyService } from 'src/services/myService/myService';
export const myServiceDowngraded = angular.module( 'services.mobileService', [
angularjsDependency1,
angularjsDependency2,
] )
.factory(
'mobileService',
downgradeInjectable( MyService ),
).name;
当“downgradeInjectable(MyService) 运行时,角度注入器尚不可用,因为角度尚未被引导。因此错误:
未捕获的错误:在引导 Angular 模块之前尝试获取 Angular 注入器。
有谁知道我该如何解决这个问题?