Ответ 1
Убедитесь, что:
- у вас есть
"emitDecoratorMetadata": true
вtsconfig.js
- каждая служба не пропущена
@Injectable()
decorator Конструктор компонентов - вводит ваши услуги (передайте их как параметры)
У меня такая ошибка после развертывания на github-страницах с angular -cli:
Ошибка: "Не удается разрешить все параметры для e: (?)."
Локальное приложение работает. Какие шаги вы бы рекомендовали сделать, чтобы найти место проблемы?
Пробовал angular -cli beta29 и beta30.
UPD: Я удалил маршрутизатор из приложения для тестирования. У меня нет только одного предположения, что это что-то с 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 {}
Убедитесь, что:
"emitDecoratorMetadata": true
в tsconfig.js
@Injectable()
decorator
Конструктор компонентов Официальный пример:
class MyOptions extends BaseRequestOptions {
search: string = 'coreTeam=true';
}
bootstrap(App, [HTTP_PROVIDERS, {provide: RequestOptions, useClass: MyOptions}]);
Фактически, export class RequestOptionsService extends RequestOptions {}
также должен отлично работать. Возможно, это специальная проблема angular -cli (я могу сделать это при настройке).
Если ваша служба имеет необязательный параметр, то @Injectable()
является обязательным. Также должны быть предоставлены параметры (RequestOptionsArgs
в вашем случае) или помечены как @Optional()
.