Поскольку субъект отправляет до подписки printFoo
.
После подписки больше нет выделений субъекта.
Вместо этого вы можете использовать BehaviorSubject, поскольку он содержит испущенные значения (последниеиспускаемое значение):
const unsubscribe = new BehaviorSubject(false);
function printFoo() {
of('foo')
.pipe(takeUntil(unsubscribe.pipe(filter(value => !!value)))) // Don't unsub if it's false emitted
.subscribe(console.log)
}
function onDestroy() {
unsubscribe2.next(true); // Emit true to cancel subscription
}