Skip to solution
hardFrontend

Why use Renderer2 instead of direct DOM access?

338 views
01

Understand the problem

Explain Renderer2.

renderer2dom
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Nudge consolestandby

Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.

03

Study the solution

Renderer2 abstracts DOM manipulation so your code works across platforms (server-side rendering, web workers) and stays safe from XSS. Directly touching nativeElement couples you to the browser and is discouraged.

Solution ready — 2 min read

Classified // press E to declassify

04

Read the code

Renderer2 instead of nativeElement
import { Directive, ElementRef, Renderer2, OnInit } from '@angular/core';

@Directive({ selector: '[appPin]', standalone: true })
export class PinDirective implements OnInit {
  constructor(private el: ElementRef, private r: Renderer2) {}

  ngOnInit() {
    // ✅ platform-safe (works under SSR), instead of el.nativeElement.style...
    this.r.setStyle(this.el.nativeElement, 'position', 'sticky');
    this.r.addClass(this.el.nativeElement, 'pinned');
  }
}
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.

Transmission complete // awaiting log

KEEP THE
STREAK ALIVE.

Dossier 111 of 121 decoded in the Angular track. One more won't hurt.

Back to track