Мой конструктор имеет необязательные параметры, и они, кажется, вовлекаются в преобладающий способ делать DI.Угловой 2 конструктор DI с необязательными параметрами
constructor(public name:string, public age?:number, private _service:Service);
Машинопись по понятным причинам не нравится, что я поставил неофициальный необязательный параметр за опциональным, кроме того, служба не получает инъекции, когда дополнительный параметр не установлен. Как я могу это решить? Я не могу помещать его где-то еще в конструкторе, так как я ожидал бы установить сервис вручную.
Есть ли что-то вроде инъекции в поле?
@Inject() private _service:Service;
constructor(public name:string, public age?:number);
Должен ли я заменить необязательные параметры на значения по умолчанию? Любые другие предложения?
благодаря
Редактировать Как описано ниже, я попытался придать услугу в объект, который не создается с помощью DI угловых в. Это не работает. Поскольку я не могу создать этот класс (модель) с помощью DI, я теперь передаю службу вручную из класса, который создает экземпляры этих объектов.
Я может быть что-то отсутствует, но " возраст "- это не то, что я хочу ввести. Я создаю новый объект, используя конструктор типа 'New Person (« Майк », 32);' 'и' Service' должен вводиться независимо от установки возраста или нет. Или мне просто нужно аннотировать все необязательные (TS =?) С помощью @Optional()? – KenavR
Не уверен, что я полностью понимаю ваш вопрос. С 'New Person (« Майк », 32)« никакой инъекции зависимостей вообще нет. DI участвует только в том случае, когда экземпляры создаются самим DI. Например, компоненты и его зависимости создаются с помощью DI. Не могли бы вы прояснить? –
«DI участвует только в том случае, когда экземпляры создаются самим DI». Наверное, это моя «проблема» или вещь, которую я не понял. Я создаю объекты вручную, определяя имя и возраст, используя конструктор. Я думал, что DI будет вводить другие параметры зарегистрированным провайдером. Угадайте, что это не сработает. – KenavR