Difference between ElemenetRef and TemplateRef in angular4
i have seen many examples of ElemenetRef and TemplateRef which got me more confused.
- what is the difference between ElementRef and TemplateRef why we should use one over another
HTML
<ng-template #element>
<div style="border:solid 3px yellow;width:250px;
height:250px;position:relative;top:0px;">
this is my element
</div>
</ng-template>
<ng-container #template>
</ng-container>
.ts file
@ViewChild('element', { read: TemplateRef }) element: TemplateRef<any>;
@ViewChild('template', { read: ViewContainerRef }) template: ViewContainerRef;
ngAfterViewInit() {
this.template.createEmbeddedView(this.element);
}
now if i change the above code to use ElementRef then also it works fine
@ViewChild('element', { read: ElementRef }) element: ElementRef;
so my question is why should i use TemplateRef if i can acheive the same with the use of ElementRef
angular elementref
|
show 3 more comments
i have seen many examples of ElemenetRef and TemplateRef which got me more confused.
- what is the difference between ElementRef and TemplateRef why we should use one over another
HTML
<ng-template #element>
<div style="border:solid 3px yellow;width:250px;
height:250px;position:relative;top:0px;">
this is my element
</div>
</ng-template>
<ng-container #template>
</ng-container>
.ts file
@ViewChild('element', { read: TemplateRef }) element: TemplateRef<any>;
@ViewChild('template', { read: ViewContainerRef }) template: ViewContainerRef;
ngAfterViewInit() {
this.template.createEmbeddedView(this.element);
}
now if i change the above code to use ElementRef then also it works fine
@ViewChild('element', { read: ElementRef }) element: ElementRef;
so my question is why should i use TemplateRef if i can acheive the same with the use of ElementRef
angular elementref
2
ElementRef
refers to an element of the DOM, whereasTemplateRef
represents an embedded template (usually a component template). So to summarize, the template ref can contain several element refs, but the element ref can not contain a template ref.
– trichetriche
Nov 19 '18 at 12:28
so if we have a simple dom like this<span><span>then we have to use elementRef and if we have a template like this <div><div><div>something here</div></div></div> then we have to use templateRef, right? if yes, then what can a templateRef do which a elementRef cannot, can u please give me a brief idea, i am not able to find anythign online regarding this
– Lijin Durairaj
Nov 19 '18 at 12:37
1
in HTML it gives<app-my-component #templateRef><div #elementRef>Some content</div></app-my-component>
. The template reference is to be used only with view container references, most of the time in structural directives (directives like*ngFor
or*ngIf
that manipulate the DOM directly). The documentation about ElementRef, TemplateRef and structural directives mght help you.
– trichetriche
Nov 19 '18 at 12:42
now viewContainerRef also has a createEmbeddedView() method same as the templateRef. then why should i use templateRef when i can use viewContainerRef and get the element using elementRef
– Lijin Durairaj
Nov 19 '18 at 12:49
You're getting away from your original question here. Don't make it an XY problem : tell me what you are trying to achieve, I'll tell you how to do it.
– trichetriche
Nov 19 '18 at 12:50
|
show 3 more comments
i have seen many examples of ElemenetRef and TemplateRef which got me more confused.
- what is the difference between ElementRef and TemplateRef why we should use one over another
HTML
<ng-template #element>
<div style="border:solid 3px yellow;width:250px;
height:250px;position:relative;top:0px;">
this is my element
</div>
</ng-template>
<ng-container #template>
</ng-container>
.ts file
@ViewChild('element', { read: TemplateRef }) element: TemplateRef<any>;
@ViewChild('template', { read: ViewContainerRef }) template: ViewContainerRef;
ngAfterViewInit() {
this.template.createEmbeddedView(this.element);
}
now if i change the above code to use ElementRef then also it works fine
@ViewChild('element', { read: ElementRef }) element: ElementRef;
so my question is why should i use TemplateRef if i can acheive the same with the use of ElementRef
angular elementref
i have seen many examples of ElemenetRef and TemplateRef which got me more confused.
- what is the difference between ElementRef and TemplateRef why we should use one over another
HTML
<ng-template #element>
<div style="border:solid 3px yellow;width:250px;
height:250px;position:relative;top:0px;">
this is my element
</div>
</ng-template>
<ng-container #template>
</ng-container>
.ts file
@ViewChild('element', { read: TemplateRef }) element: TemplateRef<any>;
@ViewChild('template', { read: ViewContainerRef }) template: ViewContainerRef;
ngAfterViewInit() {
this.template.createEmbeddedView(this.element);
}
now if i change the above code to use ElementRef then also it works fine
@ViewChild('element', { read: ElementRef }) element: ElementRef;
so my question is why should i use TemplateRef if i can acheive the same with the use of ElementRef
angular elementref
angular elementref
asked Nov 19 '18 at 12:14
Lijin DurairajLijin Durairaj
1,00411834
1,00411834
2
ElementRef
refers to an element of the DOM, whereasTemplateRef
represents an embedded template (usually a component template). So to summarize, the template ref can contain several element refs, but the element ref can not contain a template ref.
– trichetriche
Nov 19 '18 at 12:28
so if we have a simple dom like this<span><span>then we have to use elementRef and if we have a template like this <div><div><div>something here</div></div></div> then we have to use templateRef, right? if yes, then what can a templateRef do which a elementRef cannot, can u please give me a brief idea, i am not able to find anythign online regarding this
– Lijin Durairaj
Nov 19 '18 at 12:37
1
in HTML it gives<app-my-component #templateRef><div #elementRef>Some content</div></app-my-component>
. The template reference is to be used only with view container references, most of the time in structural directives (directives like*ngFor
or*ngIf
that manipulate the DOM directly). The documentation about ElementRef, TemplateRef and structural directives mght help you.
– trichetriche
Nov 19 '18 at 12:42
now viewContainerRef also has a createEmbeddedView() method same as the templateRef. then why should i use templateRef when i can use viewContainerRef and get the element using elementRef
– Lijin Durairaj
Nov 19 '18 at 12:49
You're getting away from your original question here. Don't make it an XY problem : tell me what you are trying to achieve, I'll tell you how to do it.
– trichetriche
Nov 19 '18 at 12:50
|
show 3 more comments
2
ElementRef
refers to an element of the DOM, whereasTemplateRef
represents an embedded template (usually a component template). So to summarize, the template ref can contain several element refs, but the element ref can not contain a template ref.
– trichetriche
Nov 19 '18 at 12:28
so if we have a simple dom like this<span><span>then we have to use elementRef and if we have a template like this <div><div><div>something here</div></div></div> then we have to use templateRef, right? if yes, then what can a templateRef do which a elementRef cannot, can u please give me a brief idea, i am not able to find anythign online regarding this
– Lijin Durairaj
Nov 19 '18 at 12:37
1
in HTML it gives<app-my-component #templateRef><div #elementRef>Some content</div></app-my-component>
. The template reference is to be used only with view container references, most of the time in structural directives (directives like*ngFor
or*ngIf
that manipulate the DOM directly). The documentation about ElementRef, TemplateRef and structural directives mght help you.
– trichetriche
Nov 19 '18 at 12:42
now viewContainerRef also has a createEmbeddedView() method same as the templateRef. then why should i use templateRef when i can use viewContainerRef and get the element using elementRef
– Lijin Durairaj
Nov 19 '18 at 12:49
You're getting away from your original question here. Don't make it an XY problem : tell me what you are trying to achieve, I'll tell you how to do it.
– trichetriche
Nov 19 '18 at 12:50
2
2
ElementRef
refers to an element of the DOM, whereas TemplateRef
represents an embedded template (usually a component template). So to summarize, the template ref can contain several element refs, but the element ref can not contain a template ref.– trichetriche
Nov 19 '18 at 12:28
ElementRef
refers to an element of the DOM, whereas TemplateRef
represents an embedded template (usually a component template). So to summarize, the template ref can contain several element refs, but the element ref can not contain a template ref.– trichetriche
Nov 19 '18 at 12:28
so if we have a simple dom like this<span><span>then we have to use elementRef and if we have a template like this <div><div><div>something here</div></div></div> then we have to use templateRef, right? if yes, then what can a templateRef do which a elementRef cannot, can u please give me a brief idea, i am not able to find anythign online regarding this
– Lijin Durairaj
Nov 19 '18 at 12:37
so if we have a simple dom like this<span><span>then we have to use elementRef and if we have a template like this <div><div><div>something here</div></div></div> then we have to use templateRef, right? if yes, then what can a templateRef do which a elementRef cannot, can u please give me a brief idea, i am not able to find anythign online regarding this
– Lijin Durairaj
Nov 19 '18 at 12:37
1
1
in HTML it gives
<app-my-component #templateRef><div #elementRef>Some content</div></app-my-component>
. The template reference is to be used only with view container references, most of the time in structural directives (directives like *ngFor
or *ngIf
that manipulate the DOM directly). The documentation about ElementRef, TemplateRef and structural directives mght help you.– trichetriche
Nov 19 '18 at 12:42
in HTML it gives
<app-my-component #templateRef><div #elementRef>Some content</div></app-my-component>
. The template reference is to be used only with view container references, most of the time in structural directives (directives like *ngFor
or *ngIf
that manipulate the DOM directly). The documentation about ElementRef, TemplateRef and structural directives mght help you.– trichetriche
Nov 19 '18 at 12:42
now viewContainerRef also has a createEmbeddedView() method same as the templateRef. then why should i use templateRef when i can use viewContainerRef and get the element using elementRef
– Lijin Durairaj
Nov 19 '18 at 12:49
now viewContainerRef also has a createEmbeddedView() method same as the templateRef. then why should i use templateRef when i can use viewContainerRef and get the element using elementRef
– Lijin Durairaj
Nov 19 '18 at 12:49
You're getting away from your original question here. Don't make it an XY problem : tell me what you are trying to achieve, I'll tell you how to do it.
– trichetriche
Nov 19 '18 at 12:50
You're getting away from your original question here. Don't make it an XY problem : tell me what you are trying to achieve, I'll tell you how to do it.
– trichetriche
Nov 19 '18 at 12:50
|
show 3 more comments
1 Answer
1
active
oldest
votes
ElementRef
is simply a like document.getElementById('myId')
;
by ElementRef
you can only able to do some decorations
TemplateRef
is a embedded template where you can give it to angular to create Embedded View.
*ngFor
doing the same, it reads the element as TemplateRef
and injects mutiple times to create view with data
TemplateRef
cannot be used as a element for css decorations in .ts
@trichetriche, can u please command on this answer and let me know if it is correct, thanks
– Lijin Durairaj
Nov 19 '18 at 13:39
thanks for the help @Sheik Althaf
– Lijin Durairaj
Nov 19 '18 at 13:39
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%2f53374430%2fdifference-between-elemenetref-and-templateref-in-angular4%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
ElementRef
is simply a like document.getElementById('myId')
;
by ElementRef
you can only able to do some decorations
TemplateRef
is a embedded template where you can give it to angular to create Embedded View.
*ngFor
doing the same, it reads the element as TemplateRef
and injects mutiple times to create view with data
TemplateRef
cannot be used as a element for css decorations in .ts
@trichetriche, can u please command on this answer and let me know if it is correct, thanks
– Lijin Durairaj
Nov 19 '18 at 13:39
thanks for the help @Sheik Althaf
– Lijin Durairaj
Nov 19 '18 at 13:39
add a comment |
ElementRef
is simply a like document.getElementById('myId')
;
by ElementRef
you can only able to do some decorations
TemplateRef
is a embedded template where you can give it to angular to create Embedded View.
*ngFor
doing the same, it reads the element as TemplateRef
and injects mutiple times to create view with data
TemplateRef
cannot be used as a element for css decorations in .ts
@trichetriche, can u please command on this answer and let me know if it is correct, thanks
– Lijin Durairaj
Nov 19 '18 at 13:39
thanks for the help @Sheik Althaf
– Lijin Durairaj
Nov 19 '18 at 13:39
add a comment |
ElementRef
is simply a like document.getElementById('myId')
;
by ElementRef
you can only able to do some decorations
TemplateRef
is a embedded template where you can give it to angular to create Embedded View.
*ngFor
doing the same, it reads the element as TemplateRef
and injects mutiple times to create view with data
TemplateRef
cannot be used as a element for css decorations in .ts
ElementRef
is simply a like document.getElementById('myId')
;
by ElementRef
you can only able to do some decorations
TemplateRef
is a embedded template where you can give it to angular to create Embedded View.
*ngFor
doing the same, it reads the element as TemplateRef
and injects mutiple times to create view with data
TemplateRef
cannot be used as a element for css decorations in .ts
answered Nov 19 '18 at 13:16
Sheik AlthafSheik Althaf
27717
27717
@trichetriche, can u please command on this answer and let me know if it is correct, thanks
– Lijin Durairaj
Nov 19 '18 at 13:39
thanks for the help @Sheik Althaf
– Lijin Durairaj
Nov 19 '18 at 13:39
add a comment |
@trichetriche, can u please command on this answer and let me know if it is correct, thanks
– Lijin Durairaj
Nov 19 '18 at 13:39
thanks for the help @Sheik Althaf
– Lijin Durairaj
Nov 19 '18 at 13:39
@trichetriche, can u please command on this answer and let me know if it is correct, thanks
– Lijin Durairaj
Nov 19 '18 at 13:39
@trichetriche, can u please command on this answer and let me know if it is correct, thanks
– Lijin Durairaj
Nov 19 '18 at 13:39
thanks for the help @Sheik Althaf
– Lijin Durairaj
Nov 19 '18 at 13:39
thanks for the help @Sheik Althaf
– Lijin Durairaj
Nov 19 '18 at 13:39
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%2f53374430%2fdifference-between-elemenetref-and-templateref-in-angular4%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
2
ElementRef
refers to an element of the DOM, whereasTemplateRef
represents an embedded template (usually a component template). So to summarize, the template ref can contain several element refs, but the element ref can not contain a template ref.– trichetriche
Nov 19 '18 at 12:28
so if we have a simple dom like this<span><span>then we have to use elementRef and if we have a template like this <div><div><div>something here</div></div></div> then we have to use templateRef, right? if yes, then what can a templateRef do which a elementRef cannot, can u please give me a brief idea, i am not able to find anythign online regarding this
– Lijin Durairaj
Nov 19 '18 at 12:37
1
in HTML it gives
<app-my-component #templateRef><div #elementRef>Some content</div></app-my-component>
. The template reference is to be used only with view container references, most of the time in structural directives (directives like*ngFor
or*ngIf
that manipulate the DOM directly). The documentation about ElementRef, TemplateRef and structural directives mght help you.– trichetriche
Nov 19 '18 at 12:42
now viewContainerRef also has a createEmbeddedView() method same as the templateRef. then why should i use templateRef when i can use viewContainerRef and get the element using elementRef
– Lijin Durairaj
Nov 19 '18 at 12:49
You're getting away from your original question here. Don't make it an XY problem : tell me what you are trying to achieve, I'll tell you how to do it.
– trichetriche
Nov 19 '18 at 12:50