S
Size: a a a
S
OK
OK
VK
OK
R
А
DP
AN
AE
DT
<input [formControl]="form.get(activeId)"/>После смены
...
activeId = 0;
form = this.formBuilder.group({
0: '',
1: '',
2: '',
});
activeId
при изменении значения контрола 0
будет обновлено значение инпута, несмотря на то, что контрол поменялся.<input [formControl]="activeControl$ | async"/>В классе
...
activeId$ = new BehaviorSubject(0);
form = this.formBuilder.group({
0: '',
1: '',
2: '',
});
activeControl$ = this.activeId$.pipe(
distinctUntilChanged(),
map(id => this.form.get(id)),
startWith(null),
pairwise(),
map(([prev, cur]) => {
if (prev) {
(prev as FormControl & { _clearChangeFns: () => void })._clearChangeFns();
}
return cur;
}),
);
FormControl
есть непубличный метод _clearChangeFns
, который сбрасывает массивы коллбэков контрола, что по сути и нужно.DT
<input [formControl]="form.get(activeId)"/>После смены
...
activeId = 0;
form = this.formBuilder.group({
0: '',
1: '',
2: '',
});
activeId
при изменении значения контрола 0
будет обновлено значение инпута, несмотря на то, что контрол поменялся.<input [formControl]="activeControl$ | async"/>В классе
...
activeId$ = new BehaviorSubject(0);
form = this.formBuilder.group({
0: '',
1: '',
2: '',
});
activeControl$ = this.activeId$.pipe(
distinctUntilChanged(),
map(id => this.form.get(id)),
startWith(null),
pairwise(),
map(([prev, cur]) => {
if (prev) {
(prev as FormControl & { _clearChangeFns: () => void })._clearChangeFns();
}
return cur;
}),
);
FormControl
есть непубличный метод _clearChangeFns
, который сбрасывает массивы коллбэков контрола, что по сути и нужно.DT
_clearChangeFns
:DP
DP
AE
DP
DP
DT