Angular Directive exportAs Example
April 14, 2021
The Angular directive exportAs
defines a name that can be used in the template to assign this directive to a variable. Angular directive has options such as 'selector', 'exportAs', 'inputs', 'outputs', 'providers', 'queries', 'host', and 'jit'.
The
exportAs
option defines a name as following.
@Directive({ selector: '[color-toggle]', exportAs: 'colorToggle' })
exportAs
is used to assign the directive to a variable using template reference such as #clToggle="colorToggle"
. This variable can be used to access methods of directive class directly.
Contents
Technologies Used
Find the technologies being used in our example.1. Angular 11.0.3
2. Node.js 12.5.0
3. NPM 6.9.0
Creating Directive with exportAs
Find a sample custom directive code with exportAs
.
color-directive.ts
import { Directive, ElementRef, HostListener } from '@angular/core'; @Directive({ selector: '[color-toggle]', exportAs: 'colorToggle' }) export class ColorDirective { constructor(private elRef: ElementRef) { } @HostListener('mouseover') onMouseOver() { this.toggleColor(); } @HostListener('mouseleave') onMouseLeave() { this.toggleColor(); } toggleColor() { let color = this.elRef.nativeElement.style.color; let colorToSet = (color == 'red') ? 'black' : 'red'; this.elRef.nativeElement.style.color = colorToSet; } }
<div color-toggle> Hello World! </div>
exportAs
has defined a name as colorToggle
in our custom directive code. We will assign colorToggle
to a template reference variable as following.
<div color-toggle #clToggle="colorToggle"> Welcome to you! </div>
clToggle
, we can access directive methods directly on any event.
<button (click)="clToggle.toggleColor()">Toggle</button>
Complete Example
We have already givencolor-directive.ts
file above in the article. Here find other files.
app.component.html
<h3>Example-1</h3> <div color-toggle> Hello World! </div> <h3>Example-2</h3> <div color-toggle #clToggle="colorToggle"> Welcome to you! </div> <br/><button (click)="clToggle.toggleColor()">Toggle</button>
import {Component} from '@angular/core'; @Component({ selector: 'app-root', templateUrl: 'app.component.html' }) export class AppComponent { }
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { ColorDirective } from './color-directive'; @NgModule({ declarations: [ AppComponent, ColorDirective ], imports: [ BrowserModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Run Application
To run the application, find the steps.1. Download source code using download link given below on this page.
2. Use downloaded src in your Angular CLI application. To install Angular CLI, find the link.
3. Run ng serve using command prompt.
4. Access the URL http://localhost:4200
Find the print screen of the output.
