#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.