Базовый класс библиотеки Angular без какого-либо декоратора, но с использованием угловых функций

#angular #inheritance #eslint #tslint #typescript-decorator

#angular #наследование #eslint #tslint #typescript-декоратор

Вопрос:

Я наткнулся на это в руководстве по миграции Angular.

https://angular.io/guide/migration-undecorated-classes

Я автор библиотеки. Должен ли я добавить декоратор @Directive() в базовые классы?

Поскольку поддержка декораторов без выбора введена в Angular версии 9, если вы хотите поддерживать Angular версии 8 и более ранних версий, вам не следует добавлять декоратор @Directive() без выбора. Вы можете либо добавить @Directive() с помощью селектора, либо переместить функции, специфичные для Angular, в соответствующие подклассы.

Затем я проверил нашу библиотеку кода, чтобы обнаружить, что есть некоторые базовые классы, которые до сих пор не имеют декораторов, но работают в Angular V11. Я не вижу никаких ошибок компиляции или ошибок компоновки.

Существует много таких базовых классов, которые используют угловые функции, привязку к хосту и т. Д., Но все еще без декоратора. Есть ли правило компоновки или какой-либо способ, с помощью которого мы можем их перехватить?

Ответ №1:

Позже я выяснил, что с компилятором Ivy такие классы без декораторов перехватываются во время компиляции: NG2007: Class использует угловые функции, но не оформлен. Пожалуйста, добавьте явный декоратор Angular.