Mobx @ quantumart / mobx-form-validation-kit рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╕рддреНрдпрд╛рдкрди рдкреИрдХреЗрдЬ

рд╢реБрдн рджреЛрдкрд╣рд░
рдЖрдЬ рдореИрдВ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐ React , Mobx рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред
рдЖрдзреБрдирд┐рдХ рд╕реАрдорд╛рдВрдд рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рд╛рдЗрдЯ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ, рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрдареЛрдВ рдХреЛ рднрд░рдирд╛, рдЛрдг рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХреЗ рдЖрджреЗрд╢, рдкрдВрдЬреАрдХрд░рдг рдкреГрд╖реНрда рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдореБрдЦреНрдп рддрд╛рд░реНрдХрд┐рдХ рдмреЛрдЭ рд╕рддреНрдпрд╛рдкрди рдЬрд╛рдВрдЪреЛрдВ рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИред рдХреЛрдгреАрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕реЛрдЪрд╛ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА, рдЬреЛ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдореЗрдВ рдХрдИ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдлрд┐рд░ рднреА рд░рд┐рдПрдХреНрдЯ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдкреВрд░реНрдг рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд╡рд┐рдХрд╛рд╕ рдХреА рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╡реГрддреНрддрд┐ рдореЗрдВ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рддрд░реНрдХ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдмрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рд╕рднреА рдХреЛ рдПрдХ рдкреИрдХреЗрдЬ рд▓рд┐рдЦрдХрд░ рд╣рд▓ рдХрд┐рдпрд╛: @ рдХреНрд╡рд╛рдВрдЯрдорд╛рд░реНрдЯ / рдореЛрдмреЗрдХреНрд╕-рдлреЙрд░реНрдо-рд╡реЗрд▓рд┐рдбреЗрд╢рди-рдХрд┐рдЯ

рдкреИрдХреЗрдЬ рдХреЗ рд▓рд╛рдн:
  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ
  • Mobx рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд (рд╕рдВрд╕реНрдХрд░рдг 4, рдЬреЛ рд╕рднреА рдХрд╛ рдкрд╕рдВрджреАрджрд╛, IE10 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛
  • рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдХрдЯ рдХреЗ рддрд╣рдд рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ред


рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдо рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ @ рдХреНрд╡рд╛рдВрдЯрдорд╛рд░реНрдЯ / рдореЛрдмреЗрдХреНрд╕-рдлреЙрд░реНрдо-рд╡реЗрд▓рд┐рдбреЗрд╢рди-рдХрд┐рдЯ рдкреИрдХреЗрдЬ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ, рд╣рдо рд╕рд╛рдЗрдЯ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдлреЙрд░реНрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреЗрдЬ рд▓рд┐рдЦреЗрдВрдЧреЗред

FormControl


@ рдХреНрд╡рд╛рдВрдЯрдорд╛рд░реНрдЯ / рдореЛрдмреЗрдХреНрд╕-рдлреЙрд░реНрдо-рд╡реЗрд▓рд┐рдбреЗрд╢рди-рдХрд┐рдЯ рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдлреЙрд░реНрдо рдХреЗ рдмреАрдЪ рдПрдХ рдкрд░рдд рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрджрд▓ рджреЗрдВред

рдлреЙрд░реНрдо рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @ рдХреНрд╡рд╛рдВрдЯрдорд╛рд░реНрдЯ / рдореЛрдмреЗрдХреНрд╕-рдлреЙрд░реНрдо-рд╡реЗрд▓рд┐рдбреЗрд╢рди-рдХрд┐рдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рддреАрди рдореБрдЦреНрдп рд╡рд░реНрдЧ (рд╕рддреНрдпрд╛рдкрди рдШрдЯрдХ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
  • рдлреЙрд░реНрдордЧреНрд░реБрдк - рдЖрдкрдХреЛ рд╕рддреНрдпрд╛рдкрди рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд░реНрдЧ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд░реАрдореЗрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреЛрдИ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
  • рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рд╣реИред рд╡рд░реНрдЧ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдирд┐рдЬреА рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВред
  • FormArray - рдЖрдкрдХреЛ рд╕рддреНрдпрд╛рдкрди рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореВрд▓ рд╕рд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ
  • AbstractControl - рд╕реВрдЪреАрдмрджреНрдз рд╕рддреНрдпрд╛рдкрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ, рдЯрд╛рдЗрдк рдирд╣реАрдВред
  • рдлреЙрд░реНрдордЕрдЧреНрд░реЗрдЯрдХрдВрдЯреНрд░реЛрд▓ - рдлреЙрд░реНрдордЧреНрд░реБрдк рдФрд░ рдлреЙрд░реНрдордЕрд░реЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдХреНрд▓рд╛рд╕, рдЯрд╛рдЗрдкреНрдб рдирд╣реАрдВред
  • рдлреЙрд░реНрдордЕрдмреНрд░реЗрдЯрдЧреНрд░реБрдк - рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ html рдПрд▓рд┐рдореЗрдВрдЯ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдХ рдорд╛рдиреНрдп рд░реВрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ред
рдлрд╝реЙрд░реНрдо рд╡рди рдлреЙрд░реНрдордЧреНрд░реБрдк рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдлреЙрд░реНрдо рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдлрд╝реАрд▓реНрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ
this.form = new FormGroup<IUserInfo>({ name: new FormControl( this.userInfo.name, [], v => (this.userInfo.name = v) ), surname: new FormControl( this.userInfo.surname, [], v => (this.userInfo.surname = v) ) // тАж }); 

рдлреЙрд░реНрдордЧреНрд░реБрдк рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд
 this.form = new FormGroup<IUserInfo>({ name: new FormControl( this.userInfo.name, [], v => (this.userInfo.name = v) ), surname: new FormControl( this.userInfo.surname, [], v => (this.userInfo.surname = v) ) passport: new FormGroup<IPassport >({ number: new FormControl( this.userInfo.passport.number, [], v => (this.userInfo.passport.number = v) ), // тАж }) // тАж }); 

рдЖрдк FormArray рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ FormControl рдФрд░ рдпрд╛ рдкреВрд░реЗ FormGroup рдХреЛ рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • FormArray <FormControl>
    FormArray <FormGroup>

    FormControl рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рд▓реЗрддрд╛ рд╣реИ
    • рдореВрд▓реНрдп : рддреАрдХреНрд╖реНрдгрддрд╛ рдЖрд░рдВрднрд┐рдХ рдореВрд▓реНрдп рд╣реИред
    • рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ : рдорд╛рдиреНрдпрдХрд░реНрддрд╛рдлрдВрдХреНрд╢рдирдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓рд╣реИрдВрдбрд▓рд░ [] - рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ред
    • callbackValidValue : UpdateValidValueHandler | null - рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╡реИрдз рдорд╛рди рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╣рд░ рдмрд╛рд░ рдлреЙрд░реНрдо-рдХреЙрдиреНрдЯреНрд░реЛрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдорд╛рди рд╡рд░реНрдгрд┐рдд рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
    • рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ : () (= = рдмреВрд▓рд┐рдпрди) | null - рдлрд╝рдВрдХреНрд╢рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╕рдХреНрд╖рдо / рдЕрдХреНрд╖рдо рдХрд░реЗрдЧрд╛ (рд╣рдореЗрд╢рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдЕрд╕реАрдорд┐рдд" рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╕реЗрд╡рд╛ рдХреА рдЕрдВрддрд┐рдо рддрд┐рдерд┐ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдирддреАрдЬрддрди, рдмрд╕ рдпрд╣рд╛рдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджрд░реНрдЬ рдХрд░рдХреЗ рдЬреЛ "рдЕрд╕реАрдорд┐рдд" рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЕрд╡рд▓реЛрдХрди рдХреНрд╖реЗрддреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЖрдк рддрд╛рд░реАрдЦ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрдпрд╛рдкрди рдореЗрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рджрд┐рдирд╛рдВрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
    • рдЕрддрд┐рд░рд┐рдХреНрддрдбреЗрдЯрд╛ : TAdditionalData | рдЕрд╢рдХреНрдд - рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓рд╛ рдПрдХ рдмреНрд▓реЙрдХ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдПред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЕрдЧрд░ рд╡рд╣рд╛рдБ FormControl рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдбрд░реЛрдВ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рдмрдВрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рд╕ рди рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдПрдХ рд╕рдЯреАрдХ рдФрд░ рдирд┐рд░реНрд╡рд┐рд╡рд╛рдж рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд╡рд╕рд░ рдХреЛ рднреБрдЧрддрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

    рдПрдХ рд╕реАрдорд╛ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рднреА рд╣реИ; рд╡рд┐рднрд┐рдиреНрди рд░реВрдкреЛрдВ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╛рдиреА рдЖрдк рдПрдХ рдлреЙрд░реНрдордЧреНрд░реБрдк рдмрд┐рд▓реНрдбрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА рд╡рд╕реНрддреБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рдкреНрд░рддрд┐ рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреБрд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред
    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, FormControl рдПрдХ рдПрдХрд▓ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдорд╛рди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирдпрд╛ рдорд╛рди FormControl рдореЗрдВ рдирд╣реАрдВ рдЖрдПрдЧрд╛ ред рдпрд╣ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рд░ рдХреЛрдИ рдореВрд▓ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдореВрд▓ рд╡рд╕реНрддреБ рдХреЛ рд╢реБрд░реВ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдореЗрдВ рдореВрд▓реНрдп рдирд╣реАрдВред рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП FormControl рдХреЗ рдорд╛рди рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рдирдпрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред
    рдлреЙрд░реНрдордЧреНрд░реБрдк , рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:
    • рдирд┐рдпрдВрддреНрд░рдг : TControls - AbstractControls рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдПрдХ рд╡рд╕реНрддреБред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд╕ AbstractControls рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк FormGroup , FormControl , FormArray рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ ред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреЛ рдХрд┐рд╕реА рднреА рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рднреА рдлрд╛рдпрджреЗ рдЦреЛ рдЬрд╛рдПрдВрдЧреЗред
    • рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ : рдорд╛рдиреНрдпрдХрд╛рд░рдХрдлрд╝реЙрд░реНрдордлреЙрд░реНрдордЧреНрд░реБрдкрд╣реИрдВрдбрд▓рд░ [] - рд╕рдореВрд╣ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдлреЙрд░реНрдордЧреНрд░реБрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдорд╛рди рд╣реЛрдВ - рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рддрд┐рдерд┐, рдЕрд╡рдзрд┐ рдЪрдпрди рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдПред рдпрд╣ рдЗрди рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рддрд┐рдерд┐ рд╕реАрдорд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди / рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрдн рддрд┐рдерд┐ рдЕрдВрддрд┐рдо рддрд┐рдерд┐ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ
    • рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ : () (= = рдмреВрд▓рд┐рдпрди) | null - рдлрд╝рдВрдХреНрд╢рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╕рдХреНрд╖рдо / рдЕрдХреНрд╖рдо рдХрд░реЗрдЧрд╛ (рд╣рдореЗрд╢рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо)ред рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкреВрд░реЗ рд╕рдореВрд╣ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд╣рдЪрд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдпрди рдмреЙрдХреНрд╕ рд╣реИред рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрдИ рдлреЙрд░реНрдордЧреНрд░реБрдкреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдкрд╛рд╕рдкреЛрд░реНрдЯ, рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕, рдирд╛рд╡рд┐рдХ рдХрд╛ рдкрд╛рд╕рдкреЛрд░реНрдЯ, рдЖрджрд┐ ... рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдбреНрд░реЙрдкрдбрд╛рдЙрди рдорд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдЪрдпрдирд┐рдд рдорд╛рди рдЗрд╕ рд╕рдореВрд╣ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рднреА рд╡реИрдз рдЪреЗрдХ рдЕрдХреНрд╖рдо рд╣реИрдВред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рд╕рдореВрд╣ рдХреЛ рдорд╛рдиреНрдп рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдЗрд╕рдореЗрдВ рдХреЛрдИ рдореВрд▓реНрдп рди рд╣реЛред

    рдЖрдЗрдП FormControl рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдлрд╝реЙрд░реНрдордЧреНрд░реБрдк рдФрд░ рдлрд╝реЙрд░реНрдордЕрд░реЗ рджреЛрдиреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред
    • ControlTypes - рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░ (рдирд┐рдпрдВрддреНрд░рдг | рд╕рдореВрд╣ | рд╕рд░рдгреА)
    • рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг : рдмреВрд▓рд┐рдпрди - рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВред рдХреНрдпреЛрдВрдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реНрдХреИрди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
      рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлреЙрд░реНрдордЧреНрд░реБрдк рдФрд░ рдлреЙрд░реНрдордЕрд░реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдЪреЗрдХ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк "рдбреЗрдЯрд╛ рднреЗрдЬреЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
       await this.form.wait(); if (this.form.invalid) { тАж 

    • рдЕрдХреНрд╖рдо : рдмреВрд▓рд┐рдпрди - рддреНрд░реБрдЯрд┐ рдЬрд╛рдБрдЪ рдЕрдХреНрд╖рдо рд╣реИ (рдирд┐рдпрдВрддреНрд░рдг рд╣рдореЗрд╢рд╛ рдорд╛рдиреНрдп рд╣реИ)
    • рд╕рдХреНрд░рд┐рдп : рдмреВрд▓рд┐рдпрди - рддреНрд░реБрдЯрд┐ рдЬрд╛рдБрдЪ рд╕рдХреНрд╖рдо рд╣реИред рд╕рдХреНрд░рд┐рдпрдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рди рдХрд┐рд╕реА рдкреНрд░рдкрддреНрд░ рдкрд░ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рдореВрд╣ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред
    • рдЕрдорд╛рдиреНрдп : рдмреВрд▓рд┐рдпрди; - рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдлреЙрд░реНрдордЧреНрд░реБрдк рдФрд░ рдлреЙрд░реНрдордЕрд░реЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдореВрд╣ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╕реНрд╡рдпрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдпрд╛ рдХрд┐рд╕реА рдиреЗрд╕реНрдЯреЗрдб рдлрд╝реАрд▓реНрдб (рдХрд┐рд╕реА рднреА рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реНрддрд░ рдкрд░) рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВред рдпрд╛рдиреА рдкреВрд░реЗ рдлреЙрд░реНрдо рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдКрдкрд░реА рдлреЙрд░реНрдордЧреНрд░реБрдк рдХреА рдПрдХ рдЕрдорд╛рдиреНрдп рдпрд╛ рд╡реИрдз рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
    • рд╡реИрдз : рдмреВрд▓рд┐рдпрди - рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП - рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рдлреЙрд░реНрдордЧреНрд░реБрдк рдФрд░ рдлреЙрд░реНрдордЕрд░реЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдореВрд╣ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╕реНрд╡рдпрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдиреЗрд╕реНрдЯреЗрдб рдлрд╝реАрд▓реНрдб (рдХрд┐рд╕реА рднреА рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реНрддрд░ рдкрд░) рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВред
    • рдкреНрд░рд╛рдЪреАрди : рдмреВрд▓рд┐рдпрди - рдлрд╝реАрд▓реНрдб рдореЗрдВ рдорд╛рди, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдирд╣реАрдВ рдмрджрд▓рд╛ред
    • рдЧрдВрджрд╛ : рдмреВрд▓рд┐рдпрди - рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдорд╛рди, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдмрджрд▓ рдЧрдпрд╛ред
    • рдЕрдЫреВрддрд╛ : рдмреВрд▓рд┐рдпрди - рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝реАрд▓реНрдб (рдЬреИрд╕реЗ рдЗрдирдкреБрдЯ) рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рдерд╛ред рдлреЙрд░реНрдордЧреНрд░реБрдк рдФрд░ рдлреЙрд░реНрдордЕрд░реЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдлреЛрдХрд╕ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрд╕рддреНрдп рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдлреЛрдХрд╕ рдХреЗрд╡рд▓ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд▓реНрдХрд┐ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
    • рдЫреБрдЖ : рдмреВрд▓рд┐рдпрди - рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрд╖реЗрддреНрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ) рдлреЛрдХрд╕ рдореЗрдВ рдерд╛ред FormGroup рдФрд░ FormArray рдХреЗ рд▓рд┐рдП , рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб FormControls рдореЗрдВ рд╕реЗ рдПрдХ рдлрд╝реЛрдХрд╕ рдореЗрдВ рдерд╛ред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рд╣реА рдореВрд▓реНрдп рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдлреЛрдХрд╕ рдХреЗрд╡рд▓ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд▓реНрдХрд┐ рдлрд╝реАрд▓реНрдб рд╕реЗ рднреА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
    • рдлрд╝реЛрдХрд╕ : рдмреВрд▓рд┐рдпрди - рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝реАрд▓реНрдб (рдЙрджрд╛рд╣рд░рдг рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП) рдЕрдм рдлрд╝реЛрдХрд╕ рдореЗрдВ рд╣реИред FormGroup рдФрд░ FormArray рдХреЗ рд▓рд┐рдП , рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб FormControls рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдм рдлрд╝реЛрдХрд╕ рдореЗрдВ рд╣реИред
    • рддреНрд░реБрдЯрд┐рдпрд╛рдБ : рдорд╛рдиреНрдпрдХрд░рдг [] - рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВред рд╕реВрдЪреАрдмрджреНрдз рдлрд╝реАрд▓реНрдбреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ FormControl , рдпрд╛ FormGroup , рдпрд╛ FormArray рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ , рдЕрд░реНрдерд╛рддреНред рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдФрд░ рд╕рднреА рдиреЗрд╕реНрдЯреЗрдб рдирд╣реАрдВ рд╣реИрдВред рдорд╛рдиреНрдп / рдЕрдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ
    • рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ : рдорд╛рдиреНрдпрдХрд░рдг [] - рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╕реВрдЪреАрдмрджреНрдз рдлрд╝реАрд▓реНрдбреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ FormControl, рдпрд╛ FormGroup, рдпрд╛ FormArray рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рдВрджреЗрд╢, рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИрдВред рдорд╛рдиреНрдп / рдЕрдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
    • infoMessages: ValidationEvent [] - рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕реВрдЪрдирд╛рддреНрдордХ рд╕рдВрджреЗрд╢ рд╣реЛрддреЗ рд╣реИрдВред рд╕реВрдЪреАрдмрджреНрдз рдлрд╝реАрд▓реНрдбреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ FormControl, рдпрд╛ FormGroup, рдпрд╛ FormArray рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рдВрджреЗрд╢, рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИрдВред рдорд╛рдиреНрдп / рдЕрдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
    • рд╕рдлрд▓рддрд╛рдУрдВ : рд╡реИрдзрддрд╛ - рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрдзрддрд╛ рд╕рдВрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╕реВрдЪреАрдмрджреНрдз рдлрд╝реАрд▓реНрдбреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ FormControl, рдпрд╛ FormGroup, рдпрд╛ FormArray рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рдВрджреЗрд╢, рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИрдВред рдорд╛рдиреНрдп / рдЕрдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
    • maxEventLevel () - рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЕрдзрд┐рдХрддрдо рд╕реНрддрд░ред
    • рд╡рд┐рдзрд┐ рдЕрдЧрд▓реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдореЗрдВ, рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧреАред
      1. ValidationEventTypes.Error;
      2. ValidationEventTypes.Warning;
      3. ValidationEventTypes.Info;
      4. ValidationEventTypes.Success;

    • ServerErrors : string [] - рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдлреЙрд░реНрдо рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд░реВрдк рд╣реИред рдирддреАрдЬрддрди, рд╕рд░реНрд╡рд░ рдЕрдВрддрд┐рдо рдлреЙрд░реНрдо рдХреА рдЬрд╛рдВрдЪ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдПрд░рд░ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред ServerErrors рдХреА рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдлрд╛рдИ рд╣реИ рдЬрдм рдлрд╝реЛрдХрд╕ рдЙрд╕ рдлрд╝реАрд▓реНрдб рд╕реЗ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреА рдЧрдИ рдереАрдВ, рдФрд░ рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдмрджрд▓ рджреА рдЧрдИ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рднреА рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред
    • onChange: рдкреНрд░рддрд┐рдирд┐рдзрд┐ - рдорд╛рдирдХ mobx рддрдВрддреНрд░ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
    • setDirty (рдЧрдВрджрд╛: рдмреВрд▓рд┐рдпрди): рд╢реВрдиреНрдп - рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдкреНрд░рд╛рдЪреАрди / рдЧрдВрджреЗ рдЦреЗрддреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
    • setTouched (рдЫреБрдЖ рд╣реБрдЖ: рдмреВрд▓рд┐рдпрди): рд╢реВрдиреНрдп; - рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЕрдЫреВрддреЗ / рдЫреБрдЖ рдлрд╝реАрд▓реНрдб рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
    • dispose (): void; - рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИWillUnmountред


    рдпреЗ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХреНрд╖реЗрддреНрд░ рдереЗ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрддреЗ рд╣реИрдВред
    FormControl
    • рдорд╛рди - рдЗрд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХрд╛ рд╡рд░реНрддрдорд╛рди рдорд╛рди рд╣реЛрддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рдирдпрд╛ рдорд╛рди рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


    рдлреЙрд░реНрдордЧреНрд░реБрдк рдФрд░ рдлреЙрд░реНрдордЕрд░реЗ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ
    • рдкреНрд░рддреАрдХреНрд╖рд╛ - рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдиреЗрд╕реНрдЯреЗрдб рд╕рд╣рд┐рдд рд╕рднреА (рд╕рддреНрдпрд╛рдкрди) рдХреЗ рдЪреЗрдХ рдХреЗ рдЕрдВрдд рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ
    • allControls () - рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдкрд░ рдиреЗрд╕реНрдЯреЗрдб рд╕рд╣рд┐рдд рд╕рднреА FormControl рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╛рдиреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдмрд╣реБрд╕реНрддрд░реАрдп рдлреЙрд░реНрдордЧреНрд░реБрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдлрд╝реЙрд░реНрдордЧреНрд░реБрдк рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рд╣рдореЗрдВ рдкрд╣рд▓рд╛ рдЕрдорд╛рдиреНрдп рддрддреНрд╡ рдвреВрдВрдврдирд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рддреЛ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
      рдХреЛрдб, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
       await this.form.wait(); if (this.form.invalid) { this.form.setTouched(true); const firstError = this.form.allControls().find(c => c.invalid && !!c.element); if (!!firstError) { firstError.element.focus(); } } ... 



    рд╕рддреНрдпрд╛рдкрди


    рдмреЗрд╢рдХ, рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рд╕реНрд╡рдпрдВ рд╕рддреНрдпрд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред @ рдХреНрд╡рд╛рдВрдЯрдорд╛рд░реНрдЯ / рдореЛрдмреЗрдХреНрд╕-рдлреЙрд░реНрдо-рд╡реЗрд▓рд┐рдбреЗрд╢рди-рдХрд┐рдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХрдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рддреНрдпрд╛рдкрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд╕реНрдЯрдо рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
    рдПрдХ рдЖрдпреБ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред
     new FormControl<number>( this.userInfo.age, [required(), minValue(18, "    18 .", ValidationEventTypes.Warning)], v => (this.userInfo.age = v) ) 

    рдирд╡реАрдирддрдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрдпрд╛рдкрди рд╣реЛрддрд╛ рд╣реИ:
    • рд╕рдВрджреЗрд╢ - рдПрдХ рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ред
    • EventType - рд╕рдВрджреЗрд╢ рд╕реНрддрд░ред 4 рд╕рдВрджреЗрд╢ рд╕реНрддрд░ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред
      1. рддреНрд░реБрдЯрд┐ - рддреНрд░реБрдЯрд┐рдпрд╛рдБ
      2. рдЪреЗрддрд╛рд╡рдиреА - рдЪреЗрддрд╛рд╡рдиреА
      3. рдЬрд╛рдирдХрд╛рд░реА - рд╕реВрдЪрдирд╛рддреНрдордХ рд╕рдВрджреЗрд╢
      4. рд╕рдлрд▓рддрд╛ - рд╡реИрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╣реИред


    рдкреИрдХреЗрдЬ рдореЗрдВ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рд╣реИ:
    • рдЖрд╡рд╢реНрдпрдХ (... - рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб
    • notEmptyOrSpaces (... - рдлрд╝реАрд▓реНрдб рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдирд┐рд╖реЗрдз рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред
    • рдкреИрдЯрд░реНрди (regExp: RegExp, ... - рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рдлрд╝реАрд▓реНрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рди рд╣реЛрдиреЗ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
    • invertPattern (regExp: RegExp, ... - рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдХрд┐ рдлрд╝реАрд▓реНрдб рдХреЛ рдореИрдЪ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреИрдЯрд░реНрди рдореИрдЪ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
    • minLength ( рдореАрдирд▓рдлреНрд░реЗрдо : рд╕рдВрдЦреНрдпрд╛, .... - рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдорд╛рд╡реЗрд╢реА рдкрд╛рда рдХреА рдиреНрдпреВрдирддрдо рд▓рдВрдмрд╛рдИ рд╣реИред рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдпрджрд┐ рд▓рдВрдмрд╛рдИ рдкреНрд░реЗрд╖рд┐рдд рд╕реЗ рдХрдо рд╣реИред
    • maxLength (рдЕрдзрд┐рдХрддрдо рдЧрддрд┐: рд╕рдВрдЦреНрдпрд╛, .... - рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рда рд╕рдореНрдорд┐рд▓рд┐рдд рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ рд╣реИред рдПрдХ рддреНрд░реБрдЯрд┐ рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ рдпрджрд┐ рд▓рдВрдмрд╛рдИ рдкреНрд░реЗрд╖рд┐рдд рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмреА рд╣реЛред
    • рдирд┐рд░рдкреЗрдХреНрд╖рддрд╛ (рд▓рдВрдмрд╛рдИ: рд╕рдВрдЦреНрдпрд╛, .... - рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рда рдХреА рд╕рдЯреАрдХ рд▓рдВрдмрд╛рдИ рд╣реИред рдпрджрд┐ рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИред
    • minValue (min: TEntity | ((= => TEntity)), ... - рдпрд╣ рдорд╛рдиреНрдпрддрд╛ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдпрджрд┐ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рддреНрдпрд╛рдкрди рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рди рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рд╣реИред рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ @observable рдлрд╝реАрд▓реНрдб рд╕реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдорд╛рди рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдХреЗрд╡рд▓ рддрдм рд╣реА рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдлрд╝реАрд▓реНрдб рдЬрд┐рд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдорд╛рдиреНрдпрддрд╛ рджреА рдЧрдИ рд╣реИ рд╡рд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдХрд┐ "рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб" рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реА рдЯреИрдЧ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬреЛ рдореВрд▓реНрдп @observable рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗред
    • maxValue (рдЕрдзрд┐рдХрддрдо: TEntity | () => TEntity), ... - рдпрд╣ рдорд╛рдиреНрдпрддрд╛ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдпрджрд┐ рдХреЛрдИ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИред рд╕рддреНрдпрд╛рдкрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рд╣реИред рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ @observable рдлрд╝реАрд▓реНрдб рд╕реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдорд╛рди рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдХреЗрд╡рд▓ рддрдм рд╣реА рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдлрд╝реАрд▓реНрдб рдЬрд┐рд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдХрд┐ "рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб" рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реА рдЯреИрдЧ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ рдореВрд▓реНрдп @observable рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рд╣реИ
    • notContainSpaces (... - notEmptyOrSpaces рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рддреНрд░реБрдЯрд┐ рдЬрд╛рд░реА рдХреА рдЬрд╛рдПрдЧреА рдпрджрд┐ рдореВрд▓реНрдп рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рд╣реЛред
    • рддреБрд▓рдирд╛ (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐: (рдореВрд▓реНрдп: рддреАрдХреНрд╖реНрдгрддрд╛) => рдмреВрд▓рд┐рдпрди (... - рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рд▓рд┐рдЦрдиреЗ рд╕реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЖрд╡рд░рдг рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рддреНрдпрд╛рдкрди рд╕рдорд╛рд░реЛрд╣ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдорд╛рди рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдлрд╝реАрд▓реНрдб, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЬрдЯрд┐рд▓ рдЪреЗрдХ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреАрдЖрдИрдПрди рдпрд╛ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛, рдФрд░ рдлрд┐рд░ рд╕рд╣реА / рдЧрд▓рдд рд▓реМрдЯрдирд╛ред рдЪреЗрдХ рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдЧреАред
    • isEqual (рдорд╛рди: рд╕реНрдЯреНрд░рд┐рдВрдЧ ... - рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рд╛рди рдЬрд╛рдВрдЪред

    рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рддреНрдпрд╛рдкрди рдЯреНрд░рд┐рдЧрд░ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
    рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ , рдлреЙрд░реНрдордЧреНрд░реБрдк , рдлреЙрд░реНрдордЕрд░реЗ рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕реЗрдЯ рдПрдХ рд╣реА рд╕рд░рдгреА рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдиреБрдХреНрд░рдо рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд╝реАрд▓реНрдб рдПрд░рд░ , рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ , рд╕реВрдЪрдирд╛ - рд╕рдВрджреЗрд╢ , рд╕рдлрд▓рддрд╛рдУрдВ рдХреЗ рдПрд░рд░реНрд╕ рд╣реЛрдВрдЧреЗ рдЬрд┐рдирдореЗрдВ рдПрд░рд░реНрд╕, рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ, рдПрдХ рд╣реА рдПрд░реЗ рдореЗрдВ рд╕рдВрдпреБрдХреНрдд рд╣реИрдВ, рдЖрджрд┐ ...
    рдЕрдХреНрд╕рд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗрд╡рд▓ рдПрдХ рдЧрд▓рддреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдПрдХ рдмрд╛рд░ рдореЗрдВ рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреАрдУрдЖрд░ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рдЧреБрдЬрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдПрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред
    рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡рд░рдгрдХрд╛рд░рдХ рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХреЙрд▓ рдФрд░ рдЗрд╕рдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдирдкреБрдЯ рдкрд░ рдЗрд╕реЗ рд╡реЗрд░рд┐рдПрдВрдЯ рдХрд╛ рдПрдХ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рддреНред рдЕрдЧрд▓рд╛ рд╕рддреНрдпрд╛рдкрди рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
    рджреВрд╕рд░рд╛ рдЖрд╡рд░рдг рдлрд╝рдВрдХреНрд╢рди рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХрд╛ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ wrapperActivateValidation рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рд╕рдХреНрд░рд┐рдпрдг рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдХреНрд░рд┐рдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬреЛ рдХрд┐ рдлреЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЪреЗрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреВрд░реЗ рдлреЙрд░реНрдордЧреНрд░реБрдк рднреБрдЧрддрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рд▓реНрдбрд░ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░реНрд╡рд░ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдлрд╝реАрд▓реНрдб рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрдХрдбрд╝ рдпрд╣ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдлрд╝реЙрд░реНрдо рдПрдХ рд╣реИ, "рднреБрдЧрддрд╛рди рдХреЗ рдкреНрд░рдХрд╛рд░" рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдлрд╝реАрд▓реНрдб рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рддреЛ рдЖрд╡рд░рдгрдХрд░реНрддрд╛рдЕрдиреБрд░реВрдкреАрдХрд░рдг рдЕрдорд╛рдиреНрдпрддрд╛ рдЖрдкрдХреЛ рддрд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рднреБрдЧрддрд╛рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдПрдЧреАред
    рд░реИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд░рд╣ рд╣реА рд╣реЛрдЧрд╛ред
     new FormControl( this.userInfo.megapole, [wrapperActivateValidation(() => this.info.A === 10, [ required(), pattern(/\^d{10}$/) ]), wrapperActivateValidation(() => this.info.A === 20, [ wrapperSequentialCheck([ notContainSpaces(), pattern(/\^d{20}$/) ]) ])], v => (this.userInfo.megapole = v) ) 

    рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ (), рдкреИрдЯрд░реНрди (/ \ ^ d {10} $ /) рдЪреЗрдХ рдХреЗрд╡рд▓ рдЗрд╕. info.A === 10 рдХреЗ рд╕рд╛рде рдФрд░ рдпрджрд┐ рдпрд╣. info.A === 20 рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред , рддреЛ notContainSpaces (), рдкреИрдЯрд░реНрди (/ \ ^ d {20} $ /) рд╕рддреНрдпрд╛рдкрди рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЗ рд╕рддреНрдпрд╛рдкрди рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

    рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд╣ рдХреНрд╖рдг рдЖрдПрдЧрд╛ рдЬрдм рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХрд╛ рдорд╛рдирдХ рд╕реЗрдЯ рдЕрдм рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
    рдлрд┐рд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    FormControl рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рддреЗрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдЙрддреНрддрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рднреА рд╕рддреНрдпрд╛рдкрди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИрдВред
     async function checkValueOnServer(control: FormControl): Promise<ValidationEvent[]> { if (control.value == null) { return []; } const result = await sendToServer(control.value); if (result.errorMessage) { return [ { message: result.errorMessage, type: ValidationEventTypes.Error, }, ]; } return []; } 

    рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рджреЛ рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    рдкрд╣рд▓реЗ рд╣рдо рд╣рдореЗрд╢рд╛ рдРрд░реЗ рд╕реЗ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдХрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
    рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рд▓реМрдЯреА рд╣реБрдИ рд╡рд╕реНрддреБ рд╣реИ, рдЗрд╕рдореЗрдВ рдЦреЗрддреЛрдВ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рд╣реИред
    • рдХреБрдВрдЬреА ?: рд╕реНрдЯреНрд░рд┐рдВрдЧ - рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреНрд╖реЗрддреНрд░, рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП "рдХреБрдВрдЬреА" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рднреА рдЖрдзрд╛рд░ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП, рдХреБрдВрдЬреА рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ рдФрд░ рдЙрдирдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реВрдЪреА рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдХреБрдВрдЬреА рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрдВрдЧреБрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрдо рд╣реЛ рдЧрдИ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, 0 рддрдХред
    • рд╕рдВрджреЗрд╢ : рд╕реНрдЯреНрд░рд┐рдВрдЧ - рдПрдХ рд╕рддреНрдпрд╛рдкрди рд╕рдВрджреЗрд╢ред рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреНрд╖реЗрддреНрд░ред
    • рдЯрд╛рдЗрдк рдХрд░реЗрдВ : ValidationEventTypes - рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ред
      1. рддреНрд░реБрдЯрд┐ - рддреНрд░реБрдЯрд┐рдпрд╛рдБ
      2. рдЪреЗрддрд╛рд╡рдиреА - рдЪреЗрддрд╛рд╡рдиреА
      3. рдЬрд╛рдирдХрд╛рд░реА - рд╕реВрдЪрдирд╛рддреНрдордХ рд╕рдВрджреЗрд╢
      4. рд╕рдлрд▓рддрд╛ - рд╡реИрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╣реИред

    • рдЕрддрд┐рд░рд┐рдХреНрддрддрд╛ ?: рдХреЛрдИ рднреА - рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдкреНрд░реЗрд╖рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд HTML рдорд╛рд░реНрдХрдЕрдк рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реИрд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рдореЗрдВ рднреА рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред


    рдПрдХреНрд╕рдЯреЗрдВрд╢рди


    рдХреЛрдИ рднреА рдЬрд╛рджреВ рддреБрдЪреНрдЫ рдЪреАрдЬреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╛рдо рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝реАрд▓реНрдб рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдлрд╝реЙрд░реНрдордХрдВрдЯреНрд░реЛрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
    рдХреНрдпреЛрдВрдХрд┐ FormControl рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдХреЗ рдХрд╛рд░рдг, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддрддреНрд╡реЛрдВ рдореЗрдВ рдереЛрдбрд╝реА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
    рдЗрд╕реА рд╕рдордп, рдЗрдирдкреБрдЯ рдФрд░ рдЯреЗрдХреНрд╕рд╛рд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрддреНрд╡ рдкрд░ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЕрднреА рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

    рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП, FormControl (рдирд╛рдо) рдХреЗ рд▓рд┐рдП рддрддреНрд╡ рдХрд╛ рдмрдВрдзрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
    <input type = "text" {... InputFormControl.bindActions (controls.name)} />
    рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП, рдмрдВрдзрди рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЛрдЧрд╛
    <textarea {... TextAreaFormControl.bindActions (controls.name)} />

    InputFormControl.bindActions рдФрд░ TextAreaFormControl.bindActions рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:
    • formControl : FormControl - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ FormControl рдЬреЛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрд╡рд╢реНрдпрдХ рд╣реИред
    • рдШрдЯрдирд╛рдУрдВ ? - рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред , bindActions - Element, , element FormControl -, . . event. .
      • ref
      • onChange
      • onBlur
      • onFocus


    , FormControl - .
     this.form = new FormGroup<IUserInfo>({ name: new FormControl( this.userInfo.name, [], v => (this.userInfo.name = v) ) }); 

    this.userInfo.name , FormControl . FormControl.for
     this.form = new FormGroup<IUserInfo>({ name: FormControl.for(this.userInfo, 'name', []) }); 

    , name name . , TypeScript, name , . userInfo тАФ .

    тАФ . :)

    рдЙрджрд╛рд╣рд░рдг


    React TypeScript mobx.
    .
    npm install @quantumart/mobx-form-validation-kit

    ,
    :

    ,
    npm init тАУy
    npm install --save-dev webpack webpack-cli
    npm install --save react react-dom
    npm install --save-dev @types/react @types/react-dom
    npm install --save-dev typescript ts-loader source-map-loader


    tsconfig.json
     { "compilerOptions": { "outDir": "./dist/", "sourceMap": true, "noImplicitAny": true, "module": "commonjs", "target": "es6", "jsx": "react", "experimentalDecorators": true, "emitDecoratorMetadata": true } } 


    • src\components\Hello.tsx
    • src\index.tsx
    • index.html
    • src\assets\global.scss


    src\components\ Hello.tsx
     import * as React from "react"; export class Hello extends React.Component { render() { return ( <h1> Hello from TypeScript and React! </h1> ); } } 

    src\ index.tsx
     import * as React from "react"; import * as ReactDOM from "react-dom"; import { Hello } from "./components/Hello"; ReactDOM.render( <Hello />, document.getElementById("example") ); 

    index.html
     <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello React!</title> </head> <body> <div id="example"></div> <!-- Dependencies --> <script src="./node_modules/react/umd/react.development.js"></script> <script src="./node_modules/react-dom/umd/react-dom.development.js"></script> <!-- Main --> <script src="./dist/main.js"></script> </body> </html> src\assets\global.scss .row { display: inline; } 



    webpack-dev-server
    npm install --save-dev webpack-dev-server
    npm install --save-dev awesome-typescript-loader
    npm install --save-dev html-webpack-plugin

    webpack.config.js
     const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: './src/index.tsx', resolve: { extensions: ['.ts', '.tsx', '.js'] }, output: { path: path.join(__dirname, '/dist'), filename: 'bundle.min.js' }, module: { rules: [ { test: /\.tsx?$/, loader: 'awesome-typescript-loader' }, { test: /\.(scss|css)?$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader', options: { importLoaders: 1, }, }, { loader: 'sass-loader', options: { sourceMap: true } }, ], }, ] }, plugins: [ new HtmlWebpackPlugin({ template: './index.html' }) ] } 

    , mobx React.
     "mobx": "4", "mobx-react": "^6.1.1", 

    C IE10 mobx, 4 , package.json.

      "style-loader": "^0.23.1", "css-loader": "^3.1.0", "node-sass": "^4.12.0", "sass-loader": "^7.1.0" 


    npm install

    , .
    npm install @quantumart/mobx-form-validation-kit



    package.json
     { "name": "ttt", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "webpack-dev-server --mode development --open", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "MIT", "devDependencies": { "@types/react": "^16.9.5", "@types/react-dom": "^16.9.1", "awesome-typescript-loader": "^5.2.1", "html-webpack-plugin": "^3.2.0", "source-map-loader": "^0.2.4", "ts-loader": "^6.2.0", "typescript": "^3.6.3", "webpack": "^4.41.0", "webpack-cli": "^3.3.9" }, "dependencies": { "@quantumart/mobx-form-validation-kit": "^1.0.8", "mobx": "4", "mobx-react": "^6.1.1", "react": "^16.10.2", "react-dom": "^16.10.2", "webpack-dev-server": "^3.8.2", "style-loader": "^0.23.1", "css-loader": "^3.1.0", "node-sass": "^4.12.0", "sass-loader": "^7.1.0" } } 


    npm run start


    Hello from TypeScript and React!


    Hello . RegistrationStore RegistrationStore.ts
    src\RegistrationStore.ts
     import { observable } from "mobx"; export class RegistrationStore { @observable public userInfo = { name: "" }; } export const registrationStore = new RegistrationStore(); 

    Hello.ts, .
     import * as React from "react"; import { observer } from "mobx-react"; import { registrationStore } from "../RegistrationStore"; @observer export class Hello extends React.Component { private changeName = (event: React.ChangeEvent<HTMLInputElement>) => { registrationStore.userInfo.name = event.target.value; }; render() { return ( <React.Fragment> <h1>, {registrationStore.userInfo.name}</h1> <div className="row"> <span>:</span> <input type="text" value={registrationStore.userInfo.name} onChange={this.changeName} /> </div> </React.Fragment> ); } } 

    , Store Mobx. input.
    , . , . ┬л┬╗ . , .

    @quantumart/mobx-form-validation-kit

    - .
    stc/ErrorWraper.tsx
     import * as React from "react"; import { observer } from "mobx-react"; import { FormControl } from "@quantumart/mobx-form-validation-kit"; interface Props { formControl: FormControl; } @observer export class ErrorWraper extends React.Component<Props> { render() { return ( <div> {this.props.children} {this.props.formControl.errors.map(error => ( <span key={error.message} className="error"> {error.message} </span> ))} </div> ); } } 

    , -, .

    Hello.tsx .
    - тАФ changeName. {...InputFormControl.bindActions(controls.name)} . .
    - тАУ input, input , , , .
    - тАУ form store , , , componentWillUnmount registrationStore.form.dispose() . mobx FromControl .
     import * as React from "react"; import { observer } from "mobx-react"; import { registrationStore } from "../RegistrationStore"; import { ErrorWraper } from "../ErrorWraper"; import { InputFormControl } from "@quantumart/mobx-form-validation-kit"; @observer export class Hello extends React.Component { constructor(props: any) { super(props); registrationStore.initForm(); } componentWillUnmount() { registrationStore.form.dispose(); } render() { const controls = registrationStore.form.controls; return ( <React.Fragment> <h1>, {registrationStore.userInfo.name}</h1> <div className="row"> <span>:</span> <ErrorWraper formControl={controls.name}> <input type="text" {...InputFormControl.bindActions(controls.name)} /> </ErrorWraper> </div> </React.Fragment> ); } } 

    RegistrationStore.ts.
    .
    ( ) userInfo, form. - userInfo.
     import { observable } from "mobx"; import { FormControl, FormGroup, AbstractControls } from "@quantumart/mobx-form-validation-kit"; interface IUserInfo extends AbstractControls { name: FormControl; } export class RegistrationStore { @observable public userInfo = { name: "" }; @observable public form: FormGroup<IUserInfo>; public initForm(): void { this.form = new FormGroup<IUserInfo>({ name: new FormControl( this.userInfo.name, [], v => (this.userInfo.name = v) ) }); } } export const registrationStore = new RegistrationStore(); 

Source: https://habr.com/ru/post/hi470537/


All Articles