How to use custom directive with ng-template and ngIf?
I need to generate a component dynamically. I followed this tutorial of Dynamic Component Loader. The problem is that I use *ngIf
directive in my template. Now I'm stuck at the following error in my AdBannerComponent
:
TypeError: "this.adHost is undefined"
The code from the tutorial is provided on stackblitz.
Here is the code of my AdBannerComponent
template:
<div *ngIf="flag">
<h3>Advertisements {{flag.name}}:</h3>
<ng-template ad-host></ng-template>
</div>
How should I use ng-template
to display generated component with ngIf
directive?
angular
add a comment |
I need to generate a component dynamically. I followed this tutorial of Dynamic Component Loader. The problem is that I use *ngIf
directive in my template. Now I'm stuck at the following error in my AdBannerComponent
:
TypeError: "this.adHost is undefined"
The code from the tutorial is provided on stackblitz.
Here is the code of my AdBannerComponent
template:
<div *ngIf="flag">
<h3>Advertisements {{flag.name}}:</h3>
<ng-template ad-host></ng-template>
</div>
How should I use ng-template
to display generated component with ngIf
directive?
angular
Couldn't find*ngIf
anywhere in your Template.
– SiddAjmera
Nov 23 '18 at 13:29
add a comment |
I need to generate a component dynamically. I followed this tutorial of Dynamic Component Loader. The problem is that I use *ngIf
directive in my template. Now I'm stuck at the following error in my AdBannerComponent
:
TypeError: "this.adHost is undefined"
The code from the tutorial is provided on stackblitz.
Here is the code of my AdBannerComponent
template:
<div *ngIf="flag">
<h3>Advertisements {{flag.name}}:</h3>
<ng-template ad-host></ng-template>
</div>
How should I use ng-template
to display generated component with ngIf
directive?
angular
I need to generate a component dynamically. I followed this tutorial of Dynamic Component Loader. The problem is that I use *ngIf
directive in my template. Now I'm stuck at the following error in my AdBannerComponent
:
TypeError: "this.adHost is undefined"
The code from the tutorial is provided on stackblitz.
Here is the code of my AdBannerComponent
template:
<div *ngIf="flag">
<h3>Advertisements {{flag.name}}:</h3>
<ng-template ad-host></ng-template>
</div>
How should I use ng-template
to display generated component with ngIf
directive?
angular
angular
edited Nov 23 '18 at 14:49
FIL
asked Nov 23 '18 at 13:14
FILFIL
7041818
7041818
Couldn't find*ngIf
anywhere in your Template.
– SiddAjmera
Nov 23 '18 at 13:29
add a comment |
Couldn't find*ngIf
anywhere in your Template.
– SiddAjmera
Nov 23 '18 at 13:29
Couldn't find
*ngIf
anywhere in your Template.– SiddAjmera
Nov 23 '18 at 13:29
Couldn't find
*ngIf
anywhere in your Template.– SiddAjmera
Nov 23 '18 at 13:29
add a comment |
1 Answer
1
active
oldest
votes
This is because of you have used view child. If you want to use viewchild the component should be rendered as a child component. but with *ngIf it is conditionally rendered. so you can use display:none style instead of *ngIf. display:none only change the visibility.
please refer this link for understand about *ngIf vs display:none
Your edited demo
Ok, but what if I want to usengIf
? How to render the component?
– FIL
Nov 23 '18 at 13:40
You cant with viewchild. Viewchild is a refrence of the rendered component.if there is no component it is throwing error.*ngIf doing conditionally rendering.that link which I put shows the differences.
– Asanka
Nov 23 '18 at 13:43
Theflag
value will be received from my API, so withngIf
I could avoid errorflag is undefined
.
– FIL
Nov 23 '18 at 14:04
Do you want to avoid flag undefined error?
– Asanka
Nov 23 '18 at 14:06
Ifdisplay: none
is the only way... yes.
– FIL
Nov 23 '18 at 14:07
|
show 2 more comments
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%2f53447419%2fhow-to-use-custom-directive-with-ng-template-and-ngif%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
This is because of you have used view child. If you want to use viewchild the component should be rendered as a child component. but with *ngIf it is conditionally rendered. so you can use display:none style instead of *ngIf. display:none only change the visibility.
please refer this link for understand about *ngIf vs display:none
Your edited demo
Ok, but what if I want to usengIf
? How to render the component?
– FIL
Nov 23 '18 at 13:40
You cant with viewchild. Viewchild is a refrence of the rendered component.if there is no component it is throwing error.*ngIf doing conditionally rendering.that link which I put shows the differences.
– Asanka
Nov 23 '18 at 13:43
Theflag
value will be received from my API, so withngIf
I could avoid errorflag is undefined
.
– FIL
Nov 23 '18 at 14:04
Do you want to avoid flag undefined error?
– Asanka
Nov 23 '18 at 14:06
Ifdisplay: none
is the only way... yes.
– FIL
Nov 23 '18 at 14:07
|
show 2 more comments
This is because of you have used view child. If you want to use viewchild the component should be rendered as a child component. but with *ngIf it is conditionally rendered. so you can use display:none style instead of *ngIf. display:none only change the visibility.
please refer this link for understand about *ngIf vs display:none
Your edited demo
Ok, but what if I want to usengIf
? How to render the component?
– FIL
Nov 23 '18 at 13:40
You cant with viewchild. Viewchild is a refrence of the rendered component.if there is no component it is throwing error.*ngIf doing conditionally rendering.that link which I put shows the differences.
– Asanka
Nov 23 '18 at 13:43
Theflag
value will be received from my API, so withngIf
I could avoid errorflag is undefined
.
– FIL
Nov 23 '18 at 14:04
Do you want to avoid flag undefined error?
– Asanka
Nov 23 '18 at 14:06
Ifdisplay: none
is the only way... yes.
– FIL
Nov 23 '18 at 14:07
|
show 2 more comments
This is because of you have used view child. If you want to use viewchild the component should be rendered as a child component. but with *ngIf it is conditionally rendered. so you can use display:none style instead of *ngIf. display:none only change the visibility.
please refer this link for understand about *ngIf vs display:none
Your edited demo
This is because of you have used view child. If you want to use viewchild the component should be rendered as a child component. but with *ngIf it is conditionally rendered. so you can use display:none style instead of *ngIf. display:none only change the visibility.
please refer this link for understand about *ngIf vs display:none
Your edited demo
edited Nov 23 '18 at 13:47
answered Nov 23 '18 at 13:32
AsankaAsanka
1,085416
1,085416
Ok, but what if I want to usengIf
? How to render the component?
– FIL
Nov 23 '18 at 13:40
You cant with viewchild. Viewchild is a refrence of the rendered component.if there is no component it is throwing error.*ngIf doing conditionally rendering.that link which I put shows the differences.
– Asanka
Nov 23 '18 at 13:43
Theflag
value will be received from my API, so withngIf
I could avoid errorflag is undefined
.
– FIL
Nov 23 '18 at 14:04
Do you want to avoid flag undefined error?
– Asanka
Nov 23 '18 at 14:06
Ifdisplay: none
is the only way... yes.
– FIL
Nov 23 '18 at 14:07
|
show 2 more comments
Ok, but what if I want to usengIf
? How to render the component?
– FIL
Nov 23 '18 at 13:40
You cant with viewchild. Viewchild is a refrence of the rendered component.if there is no component it is throwing error.*ngIf doing conditionally rendering.that link which I put shows the differences.
– Asanka
Nov 23 '18 at 13:43
Theflag
value will be received from my API, so withngIf
I could avoid errorflag is undefined
.
– FIL
Nov 23 '18 at 14:04
Do you want to avoid flag undefined error?
– Asanka
Nov 23 '18 at 14:06
Ifdisplay: none
is the only way... yes.
– FIL
Nov 23 '18 at 14:07
Ok, but what if I want to use
ngIf
? How to render the component?– FIL
Nov 23 '18 at 13:40
Ok, but what if I want to use
ngIf
? How to render the component?– FIL
Nov 23 '18 at 13:40
You cant with viewchild. Viewchild is a refrence of the rendered component.if there is no component it is throwing error.*ngIf doing conditionally rendering.that link which I put shows the differences.
– Asanka
Nov 23 '18 at 13:43
You cant with viewchild. Viewchild is a refrence of the rendered component.if there is no component it is throwing error.*ngIf doing conditionally rendering.that link which I put shows the differences.
– Asanka
Nov 23 '18 at 13:43
The
flag
value will be received from my API, so with ngIf
I could avoid error flag is undefined
.– FIL
Nov 23 '18 at 14:04
The
flag
value will be received from my API, so with ngIf
I could avoid error flag is undefined
.– FIL
Nov 23 '18 at 14:04
Do you want to avoid flag undefined error?
– Asanka
Nov 23 '18 at 14:06
Do you want to avoid flag undefined error?
– Asanka
Nov 23 '18 at 14:06
If
display: none
is the only way... yes.– FIL
Nov 23 '18 at 14:07
If
display: none
is the only way... yes.– FIL
Nov 23 '18 at 14:07
|
show 2 more comments
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%2f53447419%2fhow-to-use-custom-directive-with-ng-template-and-ngif%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
Couldn't find
*ngIf
anywhere in your Template.– SiddAjmera
Nov 23 '18 at 13:29