Причина, по которой это не работает с Субъектом, заключается в том, что это состояние гонки.NgIf не добавляет второй асинхронный канал в DOM и не подписывается до тех пор, пока субъект не выдаст свое значение.Так что нечего визуализировать в то время.
Самая большая проблема с этим подходом - ваша подписка на подписку подписывается дважды.Например, если message$
был HTTP-запрос, то два HTTP-запроса были бы запущены, по одному для каждого асинхронного канала.
Темы являются горячими наблюдаемыми, поэтому они не сохраняют свое значение для подписчика, подписавшегося послезначение было отправлено.
Тема поведения работает, потому что она сохранит свое значение для новых подписчиков.
Хранение значения в качестве переменной шаблона (как синтаксиса) имеет только одну подписку, так что этопочему это работает и это лучший способ справиться с этим.