[Этот вопрос касается ngrx-форм]
Вопрос 1.
Представьте, что это мой reducer.ts
//reducer.ts
import { Action, combineReducers } from '@ngrx/store';
import { createFormGroupState, formGroupReducer, FormGroupState } from 'ngrx-forms';
import { State as RootState } from '../app.reducer';
export interface FormValue {
firstName: string;
lastName: string;
email: string;
sex: string;
favoriteColor: string;
employed: boolean;
notes: string;
}
export interface State extends RootState {
simpleForm: {
formState: FormGroupState<FormValue>;
};
}
export class SetSubmittedValueAction implements Action {
static readonly TYPE = 'simpleForm/SET_SUBMITTED_VALUE';
readonly type = SetSubmittedValueAction.TYPE;
constructor(public formValue: FormValue) { }
}
export const FORM_ID = 'simpleForm';
export const INITIAL_STATE = createFormGroupState<FormValue>(FORM_ID, {
firstName: '',
lastName: '',
email: '',
sex: '',
favoriteColor: '',
employed: false,
notes: '',
});
const reducers = combineReducers<State['simpleForm'], any>({
formState(s = INITIAL_STATE, a: Action) {
return formGroupReducer(s, a);
}
});
export function reducer(s: State['simpleForm'], a: Action) {
return reducers(s, a);
}
& каждое поле связано с состоянием ngrx-forms через
//template html
[ngrxFormControlState]="(formState$ | async).controls.firstName"
[ngrxFormControlState]="(formState$ | async).controls.lastName"
[ngrxFormControlState]="(formState$ | async).controls.email"
...
Как я могу добавить операторы debounceTime () и independentUntillChanged () или любые другие операторы rxjs для каждого из полей формы до того, как значения достигнут хранилища (или уйдут)?
с помощью встроенного конструктора форм angular мы можем передать свойство valueChanges:
this.myControl.valueChanges
.pipe(
distinctUntilChanged(),
debounceTime(200)
)
Как мы можем добиться чего-то подобного с помощью ngrx-forms
Помните, что состояние не содержит никаких настраиваемых действий. Мы имеем дело только с собственными действиями ngrx-forms (например, ngrx / forms / SET_VALUE и т. д.).
Что-то вроде перехвата между шаблоном / компонентом и магазином.
Вопрос 2.
Как мы можем настроить метки для собственных действий ngrx-forms, например: ngrx / forms / SET_VALUE, ngrx / forms / MARK_AS_TOUCHED, для некоторых пользовательских меток?