ValueChanges по-прежнему срабатывает даже при использовании {emitEvent: false, onlySelf: true}Javascript

Форум по Javascript
Ответить
Anonymous
 ValueChanges по-прежнему срабатывает даже при использовании {emitEvent: false, onlySelf: true}

Сообщение Anonymous »

Я хотел бы изменить значение FormControl в Angular 12. Поэтому я сослался на этот билет, и ничего из этого не помогло: ValueChanges в FormControl срабатывает, когда Form.enable, даже с emmitEvent: false
Вот код:

Код: Выделить всё

private subscribeToChanges(): void {
const controlsToFollow = [
'useDefaultBrightnessMode',
'controlLedBrightnessDay',
'controlLedBrightnessNight',
'controlDisplayBrightnessDay',
'controlDisplayBrightnessNight',
'displayOffToExtendLifetime'
];

controlsToFollow.forEach((controlName) => {
const control = this.brightnessConfigurationForm.get(controlName) as FormControl;

if (control) {
this.asyncSaving.handleFormControlChanges(
control,
this.destroy$,
() => this.saveBrightness()
);
}
});
}
// I would like to set value to formControl without triggering valueChanges.
private resetBrightness(): void {
this.brightnessConfigurationForm.get('controlLedBrightnessDay')
.setValue(this.defaultBrightnessDay, { emitEvent: false, onlySelf: true });
this.brightnessConfigurationForm.get('controlLedBrightnessNight')
.setValue(this.defaultBrightnessNight, { emitEvent: false, onlySelf: true });
this.brightnessConfigurationForm.get('controlDisplayBrightnessDay')
.setValue(this.defaultBrightnessDay, { emitEvent: false, onlySelf: true });
this.brightnessConfigurationForm.get('controlDisplayBrightnessNight')
.setValue(this.defaultBrightnessNight, { emitEvent: false, onlySelf: true });
}
Есть мой метод из службы asyncSaving:

Код: Выделить всё

handleFormControlChanges(
formControl: FormControl,
destroy$: Subject,
onValueChange: (value: T) => void,
customOperators: Array = [tap(() => this.setLoading$(true))]): void {
let composedChanges = formControl.valueChanges;
for (const op of customOperators) {
composedChanges = composedChanges.pipe(op);
}

composedChanges
.pipe(
takeUntil(destroy$),
tap(() => this.setLoading$(true))
)
.subscribe(onValueChange);
}
Может быть, есть кто-нибудь, кто сможет мне в этом помочь.

Подробнее здесь: https://stackoverflow.com/questions/793 ... nlyself-tr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»