2017-02-03 2 views
14

у меня есть такого рода ошибки после развертывания на GitHub-страницы с угловой Cli:Ошибка: «Не удается разрешить все параметры для e: (?)».

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

Местные приложение работает. Какие шаги вы бы рекомендовали сделать, чтобы найти проблемное место?

Пытались с углового кли beta29 и beta30.

UPD: Я удалил маршрутизатор из приложения для тестирования. Не у меня есть только одно предположение, что это что-то с ДИ.

UPD2 (нашел место):

Проблема с перезаписью RequestOptions, так что:

export class RequestOptionsService extends RequestOptions {} 

и для определения поставщика:

{ provide: RequestOptions, useClass: RequestOptionsService }, 

It's still a question for me.

  • не перезаписывать RequestOptions конструктор - ошибка.
  • не перезаписать RequestOptions конструктор с пустым параметром - нет ошибки
  • перезапись RequestOptions конструктор с параметрами - ошибки

Это так, как я перезаписать конструктор:

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

Что может быть неправильно здесь ?

UPD3 (Раскрыты собственный случай):

Проблема действительно была с RequestOptions, так что вы не должны делать:

export class RequestOptionsService extends RequestOptions {} 

, но только:

export class RequestOptionsService extends BaseRequestOptions {} 
+0

Вы используете 'import: [RouterModule.forRoot (routes, useHash: true)]'? –

+0

не использовал, но попробовал (RouterModule.forRoot (маршруты, {useHash: true})) - та же ошибка - https://studytube.github.io/academy2-js –

+0

Если это нормально, вы можете поделиться своим кодом? это будет более полезно! –

ответ

1

Убедитесь, что:

  • у вас есть "emitDecoratorMetadata": true в вашем tsconfig.js
  • каждая услуга не хватает @Injectable() декоратора
  • компоненты конструкторы впрыскивает свои услуги (у них передаются как параметров)
1

Официальный примером является:

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().