在使用angular cli部署到github页面后,我遇到了这样的错误:
错误:"无法解析e:(?)的所有参数。">
本地应用程序正常工作。你建议采取哪些步骤来找到问题所在?
尝试使用angular clibeta29和beta30。
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()
。