Глобальные объекты нельзя инжектить без @Inject, ангуляр их не разрулит. Иногда он чего-то в дев моде разруливает, а в проде потом падает. Так что токены и абстрактные классы, в которые ты что-то провайдишь надо с @Inject писать. Я пишу всё с @Inject, чтобы не париться.
a) Чтобы было единообразие с токенами б) Чтобы можно было написать более общий тип в) Раньше без этого нельзя было собрать проект без метаданных, а с метаданными в код попадали всякие классы типа Event, которых нет в node.js и приходилось под SSR их как-то полифиллить
a) Чтобы было единообразие с токенами б) Чтобы можно было написать более общий тип в) Раньше без этого нельзя было собрать проект без метаданных, а с метаданными в код попадали всякие классы типа Event, которых нет в node.js и приходилось под SSR их как-то полифиллить
А ElementRef зачем через Inject? С другими-то понятно
a) Чтобы было единообразие с токенами б) Чтобы можно было написать более общий тип в) Раньше без этого нельзя было собрать проект без метаданных, а с метаданными в код попадали всякие классы типа Event, которых нет в node.js и приходилось под SSR их как-то полифиллить
А как же типизация? Из-за Inject мы ее опускаем, что может повлечь за собой непредвиденные ошибки
Ты и так на этапе анализа не можешь это проверить. Ты только когда в рантайме задёшь - тебе ангуляр скажет "Я не нашёл такую зависимость", если ты указал один класс, а провайдил другой.