1

当我按照 JIT 指令构建时ng build;当我使用标志ng build --prod为 AOT 构建时,一切都很好,该应用程序有效。但是当我尝试使用它编译它(AOT)时,出现以下错误:--aotng build --aotngc

Can't resolve all parameters for HomeComponent in /appname/src/app/home/home.component.ts: (?).

这是 HomeComponent 类:

import {EventManager} from 'app/directives/EventManager.directive';
@Component({
  selector:'home',
  template:`
          ...
    `,
  styleUrls: ['./home.component.css']
})
    export class HomeComponent  {

      showLoggedBar:Boolean;
      constructor(private _eventManager:EventManager) {

        this._eventManager.showLoggedBar.subscribe((mode)=> {
          if(mode)
          {
            this._eventManager.showBar.emit(true);
            this.showLoggedBar = mode;
          }
        });
      }
    }

[编辑] 事件管理器:

@Injectable()
export class EventManager {
    public showLoggedBar: EventEmitter<any> = new EventEmitter();
    public showLoggedDoBar: EventEmitter<any> = new EventEmitter();
    public showDoBar: EventEmitter<any> = new EventEmitter();
    public showBar:EventEmitter<any>=new EventEmitter();
    public dataSearch:EventEmitter<any>= new EventEmitter();
    public updateP:EventEmitter<any>=new EventEmitter();
    public updateD:EventEmitter<any>=new EventEmitter();
    public detailsAvailable:EventEmitter<any>= new EventEmitter();
    public infoAp:EventEmitter<any>= new EventEmitter();

  constructor() {
        this.showBar.emit(true);
    }
}

[编辑] app.module.ts :

import{NgModule} from '@angular/core';
import {
  LocationStrategy,
  PathLocationStrategy
} from '@angular/common';
import { BrowserModule  } from '@angular/platform-browser';
import { AppComponent }   from './app.component';
import { routing,  appRoutingProviders } from './app.routing';
import { HomeComponent } from './home/home.component';
import { HttpModule } from '@angular/http';
import {EventManager} from '../app/directives/EventManager.directive';


@NgModule({
  declarations:
    [
      ...
      HomeComponent,
      ...
    ],
  imports:      [BrowserModule,HttpModule,...],
  bootstrap:    [AppComponent],
  providers:[
    ...
    EventManager,
    ...
  ]
})
export class AppModule {}

您知道错误的原因吗?

4

1 回答 1

1

当您注入时EventManager,您需要提供EventManager. 提供GlobalEventManager是没有意义的。

要注入一个GlobalEventManager实例,当一个EventManager被请求时,使用useClass

providers: [{ provide: EventManager, useClass: GlobalEventManager }]

如果有注入的组件或服务GlobalEventManager,您可以使用它useExisting来避免创建两个不同的实例:

providers: [
    GlobalEventManager, 
    { provide: EventManager, useExisting: GlobalEventManager}
]
于 2017-07-27T12:05:36.273 回答