Angular 9 Renderer2 with Directives Tutorial by Example

Angular 9 Renderer2 with Directives Tutorial by Example

In this post we will give you information about Angular 9 Renderer2 with Directives Tutorial by Example. Hear we will give you detail about Angular 9 Renderer2 with Directives Tutorial by ExampleAnd how to use it also give you demo for it if it is necessary.

In this tutorial, we’ll be learning about Renderer2 in Angular 9/8 and directives which allow you to manipulate DOM. Renderer2 is a service which provides methods like createElement, createText, appendChild and addClass that help you query and manipulate the DOM elements in your Angular 9 application.

We’ll learn how to use:

  • Renderer2 with Angular 9 directives by example
  • Renderer2 createElement, createText and appendChild for creating and appending DOM elements with directives in Angular 9,
  • setAttribute and removeAttribute for dynamically setting and removing DOM attributes,
  • addClass and removeClass for dynamically adding and removing classes in Angular 9 directive,
  • setStyle and removeStyle for dyncamically setting and removing CSS styles,
  • setProperty for setting DOM properties like href of <a> elements

The Renderer2 Service in Angular 9

As mentionned before, Renderer2 is an Angular service that can be injected in the other services or components. In Angular 9, Renderer is deprecated and Renderer2 is the service that you need to use for working with the DOM.

Renderer2 allows you to create Angular 9 apps which can be rendered in environments that don’t have DOM like servers or web workers.

How to Use Renderer2 with Angular 9 Directive by Example

In this example, we’ll use Renderer2 with a custom directive.

Custom directives are great example for Renderer2 in Angular 9 becaue they are the recommended artifacts for working with the DOM.

We’ll see how to use the Renderer2′ addClass method of Renderer2 for adding a custom CSS class to the DOM elements where the directive is applied.

Create an Angular 9 Directive

Head over to a terminal, navigate to your Angular 9 project’s folder and run the following command:

ng generate directive apply-class

Next, open the src/app/apply-class/apply-class.directive.ts file and update it as follows:

import{Directive,Renderer2,ElementRef,OnInit}from'@angular/core';@Directive({selector:'[applyCSSClass]'})exportclassApplyClassDirectiveimplementsOnInit{constructor(privaterenderer2:Renderer2,privateelementRef:ElementRef){}ngOnInit(){this.renderer2.addClass(this.elementRef.nativeElement,'myClass')}}

We used Angular’s ElementRef for getting a reference to the native DOM element.

The directive can be used in your Angular templates by attahing it to elements and will add a CSS class called myClass.

<papplyCSSClass>  Angular 9 Example Directive with Renderer2</p>

We apply the directive to DOM elements in the template using the selector specified in the directive which is applyCSSClass.

Angular 9′ Renderer2 createElement, createText and appendChild Methods

The createElement method of Renderer2 allows you to create DOM elements in the Angular way without directy working with DOM.

The createText method of Renderer2 allows you to create text nodes in the DOM.

Generate an Angular 9 Directive

Head back to your command-line interface and run the following command to generate a directive:

ng generate directive new-node

Open the directive file and update it as follows:

import{Directive,Renderer2,ElementRef,OnInit}from'@angular/core';@Directive({selector:'[addNewElement]'})exportclassNewNodeDirectiveimplementsOnInit{constructor(privaterenderer2:Renderer2,privateelementRef:ElementRef){}ngOnInit(){constpNode=this.renderer2.createElement('p');consttxtNode=this.renderer.createText('A new text node');this.renderer2.appendChild(pNode,txtNode);this.renderer2.appendChild(this.elementRef.nativeElement,pNode);}}

Next, open your Angular template and add the following markup to apply the directive:

<div addNewElement></div>

Angular 9 Renderer2 setAttribute and removeAttribute

Another use case of Renderer2 in Angular 9 is setting and removing attributes.

Renderer2 provides the setAttribute() and removeAttribute() methods for setting and removing attributes from DOM elements in the Angular way without using native JavaScript methods.

Generatig an Angular 9 Directive

Go back to your terminal and generate a new directive as follows:

ng generate directive add-attribute

Open the directive file and update it as follows:

import{Directive,Renderer2,ElementRef,OnInit}from'@angular/core';@Directive({selector:'[addAttribute]'})exportclassAddAttributeDirectiveimplementsOnInit{constructor(privaterenderer2:Renderer2,privateelementRef:ElementRef){}ngOnInit(){this.renderer2.setAttribute(this.elementRef.nativeElement,'aria-hidden','true');}}
<p addAttribute>Renderer2 Directive</p>

We used the setAttribute() method to set an attribute in the DOM element.

Angular 9 Renderer2 removeClass

Let’s now see how to use the removeClass() method of Renderer2 in Angular 9.

Create a new remove-class directive and update it as follows

import{Directive,Renderer2,ElementRef,OnInit}from'@angular/core';@Directive({selector:'[removeCSSClass]'})exportclassRemoveClassDirectiveimplementsOnInit{constructor(privaterenderer2:Renderer2,privateelementRef:ElementRef){}ngOnInit(){this.renderer2.removeClass(this.elementRef.nativeElement,'myClass');}}
<p removeCSSClass>Renderer2 removeClass</p>

Angular 9′ Renderer2 setStyle and removeStyle

Just like addClass and removeClass, Renderer2 provides the setStyle() and removeStyle() methods for dynamically setting and removing styles without working with the DOM using native methods.

These methods allow you to set and remove inline CSS styles in DOM elements:

import{Directive,Renderer2,ElementRef,OnInit}from'@angular/core';@Directive({selector:'[addCSSStyle]'})exportclassAddCSSStyleDirectiveimplementsOnInit{constructor(privaterenderer2:Renderer2,privateelementRef:ElementRef){}ngOnInit(){this.renderer2.setStyle(this.elementRef.nativeElement,'background-color','black');}}

This is how the directive can be applied in the HTML templates:

<p addCSSStyle>Renderer 2 setStyle Example</p>

We can also remove the inline style using the removeStyle() method:

constructor(privaterenderer2:Renderer2,privateelementRef:ElementRef){}ngOnInit(){this.renderer2.removeStyle(this.elementRef.nativeElement,'background-color');}

Angular 9 Renderer2’s setProperty

Renderer2 provides the setProperty() methods allows you to set properties in Angular.

Let’s see this by example:

import{Directive,Renderer2,ElementRef,OnInit}from'@angular/core';@Directive({selector:'[setHrefProperty]'})exportclassSetHrefDirectiveimplementsOnInit{constructor(privaterenderer2:Renderer2,privateelementRef:ElementRef){}ngOnInit(){this.renderer2.setProperty(this.elementRef.nativeElement,'href','https://onlinecode.org');}}

This is how the directive is applied:

<a setHrefProperty>Go to Techiediaries</a>

Conclusion

In this tutorial, we’ve seen how to use Renderer2 in Angular 9 with directives to access and manipulate the DOM without using native JavaScript methods.


Hope this code and post will helped you for implement Angular 9 Renderer2 with Directives Tutorial by Example. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs

For More Info See :: laravel And github

We're accepting well-written guest posts and this is a great opportunity to collaborate : Contact US