[Этот вопрос о 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-форм с помощью
//template html
[ngrxFormControlState]="(formState$ | async).controls.firstName"
[ngrxFormControlState]="(formState$ | async).controls.lastName"
[ngrxFormControlState]="(formState$ | async).controls.email"
...
Как добавить операторы debounceTime () и differentUntillChanged () или любые другие операторы rx js для каждого поля формы, прежде чем значения достигнут хранилища (или уйдут) ?
с помощью собственного конструктора форм angular мы можем передать свойство valueChanges:
this.myControl.valueChanges
.pipe(
distinctUntilChanged(),
debounceTime(200)
)
Как мы можем добиться чего-то подобного с помощью ngrx-forms
Помните, что состояние не содержит никаких пользовательских действий Мы имеем дело только с собственными действиями ngrx-форм (например, ngrx / forms / SET_VALUE и т. Д. c, ..).
Что-то вроде перехвата между шаблоном / компонентом и магазином.
Вопрос 2.
Как мы можем настроить метки для собственных действий ngrx-форм, таких как: ngrx / forms / SET_VALUE, ngrx / forms / MARK_AS_TOUCHED для некоторых пользовательских ярлыков?