Angular 7 - Add directive dynamically
<input {{field.validatorDirective}}
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
field
has all the content required but I'd like to dynamically add the directive name to be used.
It is currently added as a string
as field.validatorDirective
This has the error
TextComponent.html:2 ERROR DOM Exception: Failed to execute
'setAttribute' on 'Element': '{{field.validatorDirective}}' is not a
valid attribute name.
My Directive has the selector usernameValidator
angular angular7
add a comment |
<input {{field.validatorDirective}}
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
field
has all the content required but I'd like to dynamically add the directive name to be used.
It is currently added as a string
as field.validatorDirective
This has the error
TextComponent.html:2 ERROR DOM Exception: Failed to execute
'setAttribute' on 'Element': '{{field.validatorDirective}}' is not a
valid attribute name.
My Directive has the selector usernameValidator
angular angular7
{{field?.validatorDirective}} try like this ?
– programoholic
Nov 23 '18 at 12:52
No, you can't do that.
– JB Nizet
Nov 23 '18 at 12:52
I have added what the directive name isusernameValidator
this is being passed through asfield.validatorDirective
– ngDough
Nov 23 '18 at 12:53
This might help --> stackoverflow.com/questions/41298168/…
– Bunyamin Coskuner
Nov 23 '18 at 12:57
add a comment |
<input {{field.validatorDirective}}
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
field
has all the content required but I'd like to dynamically add the directive name to be used.
It is currently added as a string
as field.validatorDirective
This has the error
TextComponent.html:2 ERROR DOM Exception: Failed to execute
'setAttribute' on 'Element': '{{field.validatorDirective}}' is not a
valid attribute name.
My Directive has the selector usernameValidator
angular angular7
<input {{field.validatorDirective}}
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
field
has all the content required but I'd like to dynamically add the directive name to be used.
It is currently added as a string
as field.validatorDirective
This has the error
TextComponent.html:2 ERROR DOM Exception: Failed to execute
'setAttribute' on 'Element': '{{field.validatorDirective}}' is not a
valid attribute name.
My Directive has the selector usernameValidator
angular angular7
angular angular7
edited Nov 27 '18 at 6:35
Goncalo Peres
1,3261318
1,3261318
asked Nov 23 '18 at 12:48
ngDough
607
607
{{field?.validatorDirective}} try like this ?
– programoholic
Nov 23 '18 at 12:52
No, you can't do that.
– JB Nizet
Nov 23 '18 at 12:52
I have added what the directive name isusernameValidator
this is being passed through asfield.validatorDirective
– ngDough
Nov 23 '18 at 12:53
This might help --> stackoverflow.com/questions/41298168/…
– Bunyamin Coskuner
Nov 23 '18 at 12:57
add a comment |
{{field?.validatorDirective}} try like this ?
– programoholic
Nov 23 '18 at 12:52
No, you can't do that.
– JB Nizet
Nov 23 '18 at 12:52
I have added what the directive name isusernameValidator
this is being passed through asfield.validatorDirective
– ngDough
Nov 23 '18 at 12:53
This might help --> stackoverflow.com/questions/41298168/…
– Bunyamin Coskuner
Nov 23 '18 at 12:57
{{field?.validatorDirective}} try like this ?
– programoholic
Nov 23 '18 at 12:52
{{field?.validatorDirective}} try like this ?
– programoholic
Nov 23 '18 at 12:52
No, you can't do that.
– JB Nizet
Nov 23 '18 at 12:52
No, you can't do that.
– JB Nizet
Nov 23 '18 at 12:52
I have added what the directive name is
usernameValidator
this is being passed through as field.validatorDirective
– ngDough
Nov 23 '18 at 12:53
I have added what the directive name is
usernameValidator
this is being passed through as field.validatorDirective
– ngDough
Nov 23 '18 at 12:53
This might help --> stackoverflow.com/questions/41298168/…
– Bunyamin Coskuner
Nov 23 '18 at 12:57
This might help --> stackoverflow.com/questions/41298168/…
– Bunyamin Coskuner
Nov 23 '18 at 12:57
add a comment |
1 Answer
1
active
oldest
votes
It seems you can't do that. I did try with [attr.directiveSelector]="condition"
but doesn't work with that as well.
A workaround(if you're interested in one) would be to have two inputs with an *ngIf
on both. Something like this:
<input directive1
*ngIf="condition1"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
<input directive2
*ngIf="condition2"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
add a comment |
Your Answer
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%2f53447021%2fangular-7-add-directive-dynamically%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
It seems you can't do that. I did try with [attr.directiveSelector]="condition"
but doesn't work with that as well.
A workaround(if you're interested in one) would be to have two inputs with an *ngIf
on both. Something like this:
<input directive1
*ngIf="condition1"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
<input directive2
*ngIf="condition2"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
add a comment |
It seems you can't do that. I did try with [attr.directiveSelector]="condition"
but doesn't work with that as well.
A workaround(if you're interested in one) would be to have two inputs with an *ngIf
on both. Something like this:
<input directive1
*ngIf="condition1"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
<input directive2
*ngIf="condition2"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
add a comment |
It seems you can't do that. I did try with [attr.directiveSelector]="condition"
but doesn't work with that as well.
A workaround(if you're interested in one) would be to have two inputs with an *ngIf
on both. Something like this:
<input directive1
*ngIf="condition1"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
<input directive2
*ngIf="condition2"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
It seems you can't do that. I did try with [attr.directiveSelector]="condition"
but doesn't work with that as well.
A workaround(if you're interested in one) would be to have two inputs with an *ngIf
on both. Something like this:
<input directive1
*ngIf="condition1"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
<input directive2
*ngIf="condition2"
class="form-control"
[ngClass]="{ 'border-danger': hasErrors }"
(keyup)="callback()"
[formControlName]="field.key"
[id]="field.key"
[type]="field.type"
[placeholder]="field.placeholder"
[value]="field.value">
answered Nov 23 '18 at 12:56
SiddAjmera
13k31137
13k31137
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53447021%2fangular-7-add-directive-dynamically%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
{{field?.validatorDirective}} try like this ?
– programoholic
Nov 23 '18 at 12:52
No, you can't do that.
– JB Nizet
Nov 23 '18 at 12:52
I have added what the directive name is
usernameValidator
this is being passed through asfield.validatorDirective
– ngDough
Nov 23 '18 at 12:53
This might help --> stackoverflow.com/questions/41298168/…
– Bunyamin Coskuner
Nov 23 '18 at 12:57