С помощью RxJs вы можете трансформировать Observable как угодно (сделать его холодным, горячим, переиграть и т. Д.). Обнаружение изменений запускается, если испускается Input Observable, поэтому я думаю, что Angular-компонент предназначен для восприятия Observable в качестве входного, а не живого потока.
И это известная проблема (если можно так назвать).
Кто-то предлагает добавить pipe(delay(0))
, что может быть быстрым способом ее решения (но в реальной жизни это может доставить вам проблемы, если на его создание потребуется некоторое время, потому что delay(0)
похож на setTimeout
- он работает в планировщике async
, который запускается в очереди задач макросов (точно так же, как setTimeout
)).
В противном случае передайте Observable как есть и подпишитесь в дочернем компоненте, где вы также управляете отпиской при уничтожении.