How is the following keyword used in angular2 ng-templates
$implicit
in angular 2 templates? let-<attribute>
and $implicit
?You can define local variables on ng-template through let-name. When angular creates a template by calling createEmbeddedView it can also pass context that will be used inside ng-template. Using the key $implicit in the context object will set its value as default.
ngTemplateOutlet is a powerful tool for creating customisable components. It is used by many Angular libraries to enable users to provide custom templates.
ngTemplateOutlet is a directive. It instantiates a template dynamically using a template reference and context object as parameters. In this guide, we will learn how to use it in Angular. We will show you several ngTemplateOutlet examples to learn from.
TemplateReflinkRepresents an embedded template that can be used to instantiate embedded views. To instantiate embedded views based on a template, use the ViewContainerRef method createEmbeddedView() .
You can define local variables on ng-template
through let-name
When angular creates a template by calling createEmbeddedView
it can also pass context that will be used inside ng-template
Using the key $implicit
in the context object will set its value as default. So if we write:
vcRef.createEmbeddedView(template, { $implicit: 'value' })
and we have the template
<ng-template let-foo>
{{ foo }}
</ng-template>
then we can think about it like
<ng-template let-foo="$implicit">
{{ foo }}
</ng-template>
so foo
will equal value
Plunker Example
On the other hand, if we have a context like:
{ bar: 'value' }
we have to declare variables like:
let-foo="bar"
For multiple variables, you should do something like below, A template would be:
<ng-template [ngTemplateOutlet]="template" [ngTemplateOutletContext]="{$implicit: 'Hello', key2: 'value2', key3: 'value3'}"> </ng-template>
then
<ng-template #template let-default let-key2="key2" let-key3="key3">
{{default}}
{{key2}}
{{key3}}
</ng-template>
so, output will be,
default = Hello
key2 = value2
key3 = value3
If you have to pass only a variable to the template from the container where we are referencing it, we could use
<ng-container *ngTemplateOutlet="deleteClient;context: firstName">
</ng-container>
And use it like this.
<ng-template #deleteClient let-client="firstName">
Are you sure? Want to remove {{ client }} !
</ng-template>
Where as If you have to pass the object it self to the template, we could use
<ng-container *ngTemplateOutlet="deleteClient;context: { $implicit: client }">
</ng-container>
And use it like this.
<ng-template #deleteClient let-client>
Are you sure? Want to remove {{ client.firstName }} {{ client.lastName }}!
</ng-template>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With