@@ -726,38 +726,60 @@ export class ProfileEditComponent implements OnInit, OnDestroy, AfterViewInit {
726726 }
727727
728728 addLanguage ( ) {
729- [ "language" , "languageLevel" ] . forEach ( name => this . profileForm . get ( name ) ?. clearValidators ( ) ) ;
730- [ "language" , "languageLevel" ] . forEach ( name =>
731- this . profileForm . get ( name ) ?. setValidators ( [ Validators . required ] )
732- ) ;
733- [ "language" , "languageLevel" ] . forEach ( name =>
734- this . profileForm . get ( name ) ?. updateValueAndValidity ( )
735- ) ;
736- [ "language" , "languageLevel" ] . forEach ( name => this . profileForm . get ( name ) ?. markAsTouched ( ) ) ;
729+ const languageValue = this . profileForm . get ( "language" ) ?. value ;
730+ const languageLevelValue = this . profileForm . get ( "languageLevel" ) ?. value ;
737731
738- const languageItem = this . fb . group ( {
739- language : this . profileForm . get ( "language" ) ?. value ,
740- languageLevel : this . profileForm . get ( "languageLevel" ) ?. value ,
732+ [ "language" , "languageLevel" ] . forEach ( name => {
733+ this . profileForm . get ( name ) ?. clearValidators ( ) ;
741734 } ) ;
742735
743- if ( this . editIndex ( ) !== null ) {
744- this . languageItems . update ( items => {
745- const updatedItems = [ ...items ] ;
746- updatedItems [ this . editIndex ( ) ! ] = languageItem . value ;
747-
748- this . userLanguages . at ( this . editIndex ( ) ! ) . patchValue ( languageItem . value ) ;
749- return updatedItems ;
736+ if ( ( languageValue && ! languageLevelValue ) || ( ! languageValue && languageLevelValue ) ) {
737+ [ "language" , "languageLevel" ] . forEach ( name => {
738+ this . profileForm . get ( name ) ?. setValidators ( [ Validators . required ] ) ;
750739 } ) ;
751- this . editIndex . set ( null ) ;
752- } else {
753- this . languageItems . update ( items => [ ...items , languageItem . value ] ) ;
754- this . userLanguages . push ( languageItem ) ;
755740 }
756741
757- this . profileForm . get ( "language" ) ?. reset ( ) ;
758- this . profileForm . get ( "languageLevel" ) ?. reset ( ) ;
742+ [ "language" , "languageLevel" ] . forEach ( name => {
743+ this . profileForm . get ( name ) ?. updateValueAndValidity ( ) ;
744+ this . profileForm . get ( name ) ?. markAsTouched ( ) ;
745+ } ) ;
746+
747+ const isLanguageValid = this . profileForm . get ( "language" ) ?. valid ;
748+ const isLanguageLevelValid = this . profileForm . get ( "languageLevel" ) ?. valid ;
749+
750+ if ( ! isLanguageValid || ! isLanguageLevelValid ) {
751+ return ;
752+ }
753+
754+ const languageItem = this . fb . group ( {
755+ language : languageValue ,
756+ languageLevel : languageLevelValue ,
757+ } ) ;
758+
759+ if ( languageValue && languageLevelValue ) {
760+ if ( this . editIndex ( ) !== null ) {
761+ this . languageItems . update ( items => {
762+ const updatedItems = [ ...items ] ;
763+ updatedItems [ this . editIndex ( ) ! ] = languageItem . value ;
764+ this . userLanguages . at ( this . editIndex ( ) ! ) . patchValue ( languageItem . value ) ;
765+ return updatedItems ;
766+ } ) ;
767+ this . editIndex . set ( null ) ;
768+ } else {
769+ this . languageItems . update ( items => [ ...items , languageItem . value ] ) ;
770+ this . userLanguages . push ( languageItem ) ;
771+ }
759772
760- this . editLanguageClick = false ;
773+ [ "language" , "languageLevel" ] . forEach ( name => {
774+ this . profileForm . get ( name ) ?. reset ( ) ;
775+ this . profileForm . get ( name ) ?. setValue ( null ) ;
776+ this . profileForm . get ( name ) ?. clearValidators ( ) ;
777+ this . profileForm . get ( name ) ?. markAsPristine ( ) ;
778+ this . profileForm . get ( name ) ?. updateValueAndValidity ( ) ;
779+ } ) ;
780+
781+ this . editLanguageClick = false ;
782+ }
761783 }
762784
763785 editLanguage ( index : number ) {
@@ -857,6 +879,8 @@ export class ProfileEditComponent implements OnInit, OnDestroy, AfterViewInit {
857879 this . isModalErrorSkillsChoose . set ( true ) ;
858880 if ( error . error . phone_number ) {
859881 this . isModalErrorSkillChooseText . set ( error . error . phone_number [ 0 ] ) ;
882+ } else if ( error . error . language ) {
883+ this . isModalErrorSkillChooseText . set ( error . error . language ) ;
860884 } else {
861885 this . isModalErrorSkillChooseText . set ( error . error [ 0 ] ) ;
862886 }
0 commit comments