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