У нас есть ужасный сторонний продукт, связанный с угловой версией 1.3 (длинная история).
Как мне лучше всего справиться с инициализацией полей в машинописи?Например, в этом контроллере:
export class Controller {
// Local state
// choices: DropDown{} // to make this non optional, I need to set strictPropertyInitialization to false,
constructor(public choices: DropDown[]) {}
}
export function choiceListEditDirective(): IDirective {
return {
controller: Controller,
controllerAs: 'ctrl',
template,
restrict: 'E',
bindToController: true,
scope: {
choices: '='
}
};
}
Из-за strict
и strictPropertyInitialization
, tsc не нравится иметь неинициализированные свойства, которые будут устанавливать angular.
Так что у меня есть 2 (возможно 1) варианты выбора, установите strictPropertyInitialization
в false
в tsconfig.json
или как-то используйте инициализацию открытого поля:
constructor(public choices: DropDown[]) {}
Но Angular жалуется на это со следующей ошибкой:
[$injector:unpr] Unknown provider: choicesProvider <- choices
Это потому, что angular должен что-то искать для введения зависимости.
Как мне лучше всего справиться с этим, если я застрял в древней версии angular (к сожалению).