а в чем проблема то? если результат нужен 1 раз используй - take(1), если много подписок в 1м компоненте - takeUntil(Subject) в каждый
take(1) тоже не дает гарантии, что все пойдет по плану. takeUntil, unsubscribe или что-то еще все равно придется использовать, чтобы иметь гарантию стабильной работы.