我正在将AngularJS 1.5.X应用程序升级到Angular 4.3.0。我设法成功引导应用程序并在AngularJS屏幕上使用Angular组件,直到我必须将AngularJS服务升级到Angular以用于Angular组件。 我必须按照升级指南中的描述创建一个提供程序,然后我开始收到AngularJS $ injector未定义的错误。
所以我将AngularJS引导逻辑移到了AppModule而不是main.ts.之后错误消失但路由已停止工作,因此ng-view无效。
我的代码App.Module.ts如下: -
function getSomeService(i: IInjectorService): IConfig { return
i.get('someService'); }
function getScope(i: IInjectorService): angular.IRootScopeService {
return i.get('$rootScope'); }
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpClientModule,
UpgradeModule ],
declarations: [
AppComponent,
RootComponent,
NavigationHeaderComponent ],
providers: [
{
provide: '$scope',
useFactory: getScope,
deps: ['$injector']
},
{
provide: 'someService',
useFactory: getService,
deps: ['$injector']
} ],
entryComponents: [
AppComponent,
RootComponent ] })
export class AppModule {
constructor(private upgrade: UpgradeModule) { }
public ngDoBootstrap(app: ApplicationRef): void {
this.upgrade.bootstrap(document.documentElement, ['app']);
app.bootstrap(AppComponent); }
main.ts
platformBrowserDynamic().bootstrapModule(AppModule);
App.Component.ts
@Component({ selector: 'my-app', template: `<div class="ng-view"></div>` }) export class AppComponent {}
的index.html
<div> <my-app></my-app> </div>