Summary
Let’s recap what we’ve learned about structural directives.
Let’s highlight the most important things we need to remember about structural directives.
Generate file
To generate the directive file using Angular CLI, we use the following command which is the same as an attribute directive:
ng generate directive app-custom-directive
Directive syntax
The empty directive class looks like this and is the same as an attribute directive:
@Directive({
selector: '[appCustomDirective]'
})
export class CustomDirective {
constructor() { }
}
Asterisk syntax *
We use the asterisk symbol as a prefix if we need to mark a directive as structural in Angular. Doing so makes sure that Angular can use the element as a template instead of rendering it directly, like so:
<div *yourDirective> </div>
The TemplatRef
and ViewContainerRef
classes
We can inject TemplateRef
and ViewContainerRef
to gain the ability to manipulate the view, like this:
constructor(
private templateRef: TemplateRef<any>,
private viewContainerRef: ViewContainerRef,
){}
Render elements
We use TemplateRef
and ViewContainerRef
to render the element based on the template in the view. The rendered element or view is placed in the view container.
this.viewContainerRef.createEmbeddedView(this.templateRef);
Clear the view
To clear the view container and remove all added nodes, we call the clear
function on ViewContainerRef
.
this.viewContainerRef.clear();
Other techniques
Techniques such as the Input
and Output
properties let us bind and pass the data, just like with attribute directives, and can be called when needed.
Get hands-on with 1400+ tech skills courses.