@@ -5,45 +5,56 @@ import {
55 signal ,
66 WritableSignal ,
77} from '@angular/core' ;
8- import { form , FormField , max , min , required } from '@angular/forms/signals' ;
8+ import {
9+ form ,
10+ FormField ,
11+ FormRoot ,
12+ max ,
13+ min ,
14+ required ,
15+ } from '@angular/forms/signals' ;
916
1017type UserData = {
1118 name : string ;
1219 lastname : string ;
13- age : number ;
20+ age : number | null ;
1421 note : string ;
1522} ;
1623
1724@Component ( {
1825 selector : 'app-root' ,
19- imports : [ JsonPipe , FormField ] ,
26+ imports : [ JsonPipe , FormField , FormRoot ] ,
2027 templateUrl : './app.component.html' ,
2128 changeDetection : ChangeDetectionStrategy . OnPush ,
2229} )
2330export class AppComponent {
2431 private readonly _initialData : UserData = {
2532 name : '' ,
2633 lastname : '' ,
27- age : NaN ,
34+ age : null ,
2835 note : '' ,
2936 } ;
3037 private _userModel = signal < UserData > ( this . _initialData ) ;
3138
32- protected userForm = form ( this . _userModel , ( schemaPath ) => {
33- required ( schemaPath . name , { message : 'Name is required' } ) ;
34- min ( schemaPath . age , 1 , { message : 'Age must be at least 1' } ) ;
35- max ( schemaPath . age , 99 , { message : 'Age must be at most 99' } ) ;
36- } ) ;
39+ protected userForm = form (
40+ this . _userModel ,
41+ ( schemaPath ) => {
42+ required ( schemaPath . name , { message : 'Name is required' } ) ;
43+ min ( schemaPath . age , 1 , { message : 'Age must be at least 1' } ) ;
44+ max ( schemaPath . age , 99 , { message : 'Age must be at most 99' } ) ;
45+ } ,
46+ {
47+ submission : {
48+ action : async ( ) => {
49+ if ( this . userForm ( ) . valid ( ) ) {
50+ this . setSubmittedData ( ) ;
51+ }
52+ } ,
53+ } ,
54+ } ,
55+ ) ;
3756 protected submittedData : WritableSignal < UserData | null > = signal ( null ) ;
3857
39- public onSubmit ( event : Event ) : void {
40- event . preventDefault ( ) ;
41-
42- if ( this . userForm ( ) . valid ( ) ) {
43- this . setSubmittedData ( ) ;
44- }
45- }
46-
4758 public onReset ( ) : void {
4859 this . userForm ( ) . reset ( this . _initialData ) ;
4960 this . setSubmittedData ( ) ;
0 commit comments