3.0.0 - Revolution
This release requires TypeScript >=2.8.0 for the conditional type support. It also requires Angular >= 6.1.0 for compatibility with that TypeScript version.
Breaking Changes
- remove
cast
utility function since it is obsolete due to proper control type inference - change order of parameters for many update functions to more be consistent
addArrayControl
: movestate
parameter to first position for uncurried overload (ab094b8)removeArrayControl
: movestate
parameter to first position for uncurried overload (5a5aa17)addGroupControl
: movestate
parameter to first position for uncurried overload (b6da5ee)removeGroupControl
: movestate
parameter to first position for uncurried overload (a9035ce)setErrors
: rework to support different parameter combinations for errors (i.e. single error object, array of error objects, and rest parameters) and movestate
parameter to first position for uncurried overload (15ea555)setUserDefinedProperty
: movestate
parameter to first position for uncurried overload (520c384)setValue
: movestate
parameter to first position for uncurried overload (1a69795)validate
: movestate
parameter to first position for uncurried overload and add rest param overloads
- due to rework of
updateArray
,updateGroup
, andupdateRecursive
update functions it is now invalid to call any of these functions without parameters (which made no sense anyway) but it is still possible to call the functions with an empty array as parameter (which is useful in dynamic situations) - remove
payload
property from all actions and move corresponding properties into action itself (6f955e9) - replace
createFormGroupReducerWithUpdate
withcreateFormStateReducerWithUpdate
(which takes any kind of form state, see the user guide for more details) (1b6114c) - mark all state properties as
readonly
to make it more clear the state is not meant to be modified directly (291e0da) - change form arrays and groups to preserve the values of
isDirty
,isEnabled
,isTouched
, andisSubmitted
when the state is changed instead of always recomputing the values of these properties based on the state's child states (e.g. the state is not automatically disabled when all its child states are disabled, it is not automatically marked as pristine if it was dirty and all its child states are marked as pristine or all children are removed, etc.) (9202d1e), closes #68 - mark arrays and groups as dirty when adding or removing controls (9202d1e)
Features
- use conditional types to infer the type of child controls (see the documentation for more details)
- add support for using arrays and objects as control values via boxing (see the documentation for more details) (315ae4c)
- add
formStateReducer
function, a reducer which can reduce any kind of form state and is correctly typed due to conditional type inference (48eaaeb) - rework
updateArray
to support different parameter combinations for update functions (i.e. single function, array of functions, and rest parameters) (f82abf8) - rework
updateGroup
to support different parameter combinations for update function objects (i.e. single object, array of objects, and rest parameters) which reduces the probability of false type inference results (0bb1ca7) - rework
updateRecursive
to support different parameter combinations for update function objects (i.e. single object, array of objects, and rest parameters) (96121c3) - add
updateArrayWithFilter
update function which works the same asupdateArray
except that it also takes a filter function that is applied to each array element to determine whether the update function should be applied (0b66a6f) - add
notEqualTo
validation function (851a1ed) - enhance all form state reducers to match type signature for
ActionReducer
(they will still throw an error if the state isundefined
) (f3b5fea) - add support for
undefined
values for all validation functions (6cce8d0, thanks @romankhrystynych for his contribution in #65), closes #64 - improve typing of
errors
property on form states by using module augmentation inside of validation module to add well defined error properties toValidationErrors
interface (e202e65) - move documentation to Read the Docs
- add FAQ
- add some reducer tests for example application to showcase how ngrx-forms can be tested (5098f02), closes #58