Почему еще не выпустили Angular 9?
После новогодних каникул оставалось всего ~12 тасок, которые блокировали релиз. Сейчас же осталось
всего 2. Более подробно про них будет ниже.
1. host binding к pipe [breaking change] теперь нельзя юзать таким образом
host: {
'[class.active]': '(active$ | async) == true'
}
С ivy этого не удастся, поэтому осталось написать лишь в guid по миграции, что не стоит так больше.
2. Проблема увеличения бандла после включения Ivy.
Не понятно закроют ли этот таск перед релизом или оставят до лучших времен, так как новых ответов от команды Angular все еще нет. Немного подробнее про проблему и как ее можно решить.
Все из за различия в renderer. Во VE компонент генерируется в 2 файла:
transpiled file и .ngfactory.js который включает template factory.
Допустим у нас есть условно SharedComponent лежащий в SharedModule, а SharedModule включен в AppModule, еще и в LazyModule.
Что произойдет:
в VE:
SharedComponent class уйдет в main.js , а .ngfactory.js в common.js
в Ivy: SharedComponent уйдет в main.js
Если уберем ссылку SharedModule из AppModule, все станет на свои места, SharedComponent уйдет в common.js и размер main.js естественно станет меньше.
Собственно, если обнаружите что main.js увеличился то проверьте ваш LazyModules на Shared из AppModule.
Демо.
Так же эту проблему можно решить с помощью различных техник использования
lazy components в Ivy.