1

我正在将 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);

应用组件.ts

@Component({   selector: 'my-app',   template: `<div class="ng-view"></div>` })   export class AppComponent {}

索引.html

   <div>    <my-app></my-app> </div>
4

0 回答 0