错误:"Can't resolve all parameters for e: (?)."



在使用angular cli部署到github页面后,我遇到了这样的错误:

错误:"无法解析e:(?)的所有参数。">

本地应用程序正常工作。你建议采取哪些步骤来找到问题所在?

尝试使用angular clibeta29beta30

UPD:出于测试目的,我已从应用程序中删除了Router。不是,我只有一个猜测,这是与DI有关。

UPD2(找到地点):

问题在于重写RequestOptions,因此:

export class RequestOptionsService extends RequestOptions {}

对于提供商定义:

{ provide: RequestOptions, useClass: RequestOptionsService },

这对我来说仍然是个问题。

  • 不覆盖RequestOptions构造函数-错误
  • 用空参数覆盖RequestOptions构造函数-无错误
  • 用参数覆盖RequestOptions构造函数-错误

这是我重写构造函数的方式:

constructor(options?: RequestOptionsArgs) {
super(options);
}

这里可能出了什么问题?

UPD3(已解决自身案例):

问题确实出在RequestOptions上,所以你不应该这样做:

export class RequestOptionsService extends RequestOptions {}

但仅限于:

export class RequestOptionsService extends BaseRequestOptions {}

确保:

  • 您的tsconfig.js中有"emitDecoratorMetadata": true
  • 每个服务都不缺少@Injectable()装饰器
  • 组件构造函数注入您的服务(将它们作为参数)

官方示例为:

class MyOptions extends BaseRequestOptions {
search: string = 'coreTeam=true';
}
bootstrap(App, [HTTP_PROVIDERS, {provide: RequestOptions, useClass: MyOptions}]);

事实上,export class RequestOptionsService extends RequestOptions {}也应该工作得很好。可能是角度cli特定的问题(我可以在我的设置中做到这一点)。

如果您的服务具有非可选参数,则必须使用@Injectable()。此外,必须提供参数(在您的情况下为RequestOptionsArgs)或标记为@Optional()

相关内容

最新更新