Using built-in Angular Validators on a FormArray
Using FormBuilder, I instantiate a FormArray for an array of email fields. I assign it a set of Validator
s, which includes a custom Validator
, and Angular's built-in Validators.email
.
this.formBuilder.array(
[this.formBuilder.control('')],
Validators.compose([customValidator, Validators.email])
)
Assigning the Validator
s in this way means that the FormArray
is passed as the control
parameter to the Validators. My custom validator can be tuned to expect a FormArray
, but Validators.email
expects a FormControl
with a single value.
How do I use Angular built-in Validators with a FormArray
?
angular angular-reactive-forms angular-forms
add a comment |
Using FormBuilder, I instantiate a FormArray for an array of email fields. I assign it a set of Validator
s, which includes a custom Validator
, and Angular's built-in Validators.email
.
this.formBuilder.array(
[this.formBuilder.control('')],
Validators.compose([customValidator, Validators.email])
)
Assigning the Validator
s in this way means that the FormArray
is passed as the control
parameter to the Validators. My custom validator can be tuned to expect a FormArray
, but Validators.email
expects a FormControl
with a single value.
How do I use Angular built-in Validators with a FormArray
?
angular angular-reactive-forms angular-forms
add a comment |
Using FormBuilder, I instantiate a FormArray for an array of email fields. I assign it a set of Validator
s, which includes a custom Validator
, and Angular's built-in Validators.email
.
this.formBuilder.array(
[this.formBuilder.control('')],
Validators.compose([customValidator, Validators.email])
)
Assigning the Validator
s in this way means that the FormArray
is passed as the control
parameter to the Validators. My custom validator can be tuned to expect a FormArray
, but Validators.email
expects a FormControl
with a single value.
How do I use Angular built-in Validators with a FormArray
?
angular angular-reactive-forms angular-forms
Using FormBuilder, I instantiate a FormArray for an array of email fields. I assign it a set of Validator
s, which includes a custom Validator
, and Angular's built-in Validators.email
.
this.formBuilder.array(
[this.formBuilder.control('')],
Validators.compose([customValidator, Validators.email])
)
Assigning the Validator
s in this way means that the FormArray
is passed as the control
parameter to the Validators. My custom validator can be tuned to expect a FormArray
, but Validators.email
expects a FormControl
with a single value.
How do I use Angular built-in Validators with a FormArray
?
angular angular-reactive-forms angular-forms
angular angular-reactive-forms angular-forms
edited Nov 28 '18 at 21:24
MattTreichel
asked Nov 28 '18 at 21:15
MattTreichelMattTreichel
438923
438923
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
formbuild array method specify that validatorOrOpts or asyncValidator
parameters gone to run on the form array itself not the controls of the array so there are two solution
add the validator to the control it self
this.formBuilder.array(
[this.formBuilder.control('',Validators.email)],
Validators.compose([customValidator])
)
- create a custom validator and trigger angular validator on each array controls
function customArrayEmailValidator(formArray: FormArray) {
if (formArray.length > 0) {
for (let c of formArray.controls) {
let state = Validators.email(c)
if (state !== null) {
return { emailInValid: state }
}
}
return null;
} else {
return null;
}
}
but it 's still look the same like the first way
stackblitz demo
FormBuilder - Array
The first solution is unfortunate, because of course that would have to be applied for every individual control added to the array. I guess the second solution works as well as it possibly can, if less clean than some Angular built-in way.
– MattTreichel
Dec 4 '18 at 15:02
add a comment |
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53528199%2fusing-built-in-angular-validators-on-a-formarray%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
formbuild array method specify that validatorOrOpts or asyncValidator
parameters gone to run on the form array itself not the controls of the array so there are two solution
add the validator to the control it self
this.formBuilder.array(
[this.formBuilder.control('',Validators.email)],
Validators.compose([customValidator])
)
- create a custom validator and trigger angular validator on each array controls
function customArrayEmailValidator(formArray: FormArray) {
if (formArray.length > 0) {
for (let c of formArray.controls) {
let state = Validators.email(c)
if (state !== null) {
return { emailInValid: state }
}
}
return null;
} else {
return null;
}
}
but it 's still look the same like the first way
stackblitz demo
FormBuilder - Array
The first solution is unfortunate, because of course that would have to be applied for every individual control added to the array. I guess the second solution works as well as it possibly can, if less clean than some Angular built-in way.
– MattTreichel
Dec 4 '18 at 15:02
add a comment |
formbuild array method specify that validatorOrOpts or asyncValidator
parameters gone to run on the form array itself not the controls of the array so there are two solution
add the validator to the control it self
this.formBuilder.array(
[this.formBuilder.control('',Validators.email)],
Validators.compose([customValidator])
)
- create a custom validator and trigger angular validator on each array controls
function customArrayEmailValidator(formArray: FormArray) {
if (formArray.length > 0) {
for (let c of formArray.controls) {
let state = Validators.email(c)
if (state !== null) {
return { emailInValid: state }
}
}
return null;
} else {
return null;
}
}
but it 's still look the same like the first way
stackblitz demo
FormBuilder - Array
The first solution is unfortunate, because of course that would have to be applied for every individual control added to the array. I guess the second solution works as well as it possibly can, if less clean than some Angular built-in way.
– MattTreichel
Dec 4 '18 at 15:02
add a comment |
formbuild array method specify that validatorOrOpts or asyncValidator
parameters gone to run on the form array itself not the controls of the array so there are two solution
add the validator to the control it self
this.formBuilder.array(
[this.formBuilder.control('',Validators.email)],
Validators.compose([customValidator])
)
- create a custom validator and trigger angular validator on each array controls
function customArrayEmailValidator(formArray: FormArray) {
if (formArray.length > 0) {
for (let c of formArray.controls) {
let state = Validators.email(c)
if (state !== null) {
return { emailInValid: state }
}
}
return null;
} else {
return null;
}
}
but it 's still look the same like the first way
stackblitz demo
FormBuilder - Array
formbuild array method specify that validatorOrOpts or asyncValidator
parameters gone to run on the form array itself not the controls of the array so there are two solution
add the validator to the control it self
this.formBuilder.array(
[this.formBuilder.control('',Validators.email)],
Validators.compose([customValidator])
)
- create a custom validator and trigger angular validator on each array controls
function customArrayEmailValidator(formArray: FormArray) {
if (formArray.length > 0) {
for (let c of formArray.controls) {
let state = Validators.email(c)
if (state !== null) {
return { emailInValid: state }
}
}
return null;
} else {
return null;
}
}
but it 's still look the same like the first way
stackblitz demo
FormBuilder - Array
answered Dec 4 '18 at 11:18
malbarmawimalbarmawi
5,91131334
5,91131334
The first solution is unfortunate, because of course that would have to be applied for every individual control added to the array. I guess the second solution works as well as it possibly can, if less clean than some Angular built-in way.
– MattTreichel
Dec 4 '18 at 15:02
add a comment |
The first solution is unfortunate, because of course that would have to be applied for every individual control added to the array. I guess the second solution works as well as it possibly can, if less clean than some Angular built-in way.
– MattTreichel
Dec 4 '18 at 15:02
The first solution is unfortunate, because of course that would have to be applied for every individual control added to the array. I guess the second solution works as well as it possibly can, if less clean than some Angular built-in way.
– MattTreichel
Dec 4 '18 at 15:02
The first solution is unfortunate, because of course that would have to be applied for every individual control added to the array. I guess the second solution works as well as it possibly can, if less clean than some Angular built-in way.
– MattTreichel
Dec 4 '18 at 15:02
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53528199%2fusing-built-in-angular-validators-on-a-formarray%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown