как справиться с инициализацией членов класса в угловой версии 1.3 с машинописным шрифтом 3 - PullRequest
0 голосов
/ 25 сентября 2019

У нас есть ужасный сторонний продукт, связанный с угловой версией 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 (к сожалению).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...