Рассматривали ли вы использование реактивных элементов управления формы? Не нужно изобретать велосипед, angular поддерживает это из коробки. у вас может быть группа реактивной формы, которая имеет флажок реактивной формы для вашего флажка, и angular будет обрабатывать изменения значений, наблюдаемые для вас, все, что вам нужно сделать, это передать данные в наблюдаемые реактивные формы, а затем использовать оператор переключения на основе по вашей необходимости, например switchMap (отменит предыдущую подписку) в случае, если было отправлено новое значение, или выхлопная карта (запретит новую подписку до завершения текущей)
пример
<form [formGroup]='formGroup'>
<input type='checkbox' formControlName='checkboxControlName' value='true' />
</form>
component
formGroup = new FormGroup({
checkboxControlName: new FormControl(false),
});
ngOnInit(){
//Filter is in case you need to make sure the checkbox is checked.
this.formGroup.get('checkboxControlName').valueChanges.pipe(
filter(val) => val === true),
switchMap(val => add your new subscription here));
}
Подробнее