Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

invokeElementMethod in Renderer2 angular

Context Angular project
I have the following snippet:

export class OnlyNumberDirective {
  constructor(private _el: ElementRef,private renderer:Renderer2) {
  }
  @HostListener('input', ['$event']) onInputChange(e) {
    this.renderer.invokeElementMethod(this._el.nativeElement, 'dispatchEvent', [event]);
  }
}

it uses Renderer, but it is deprecated and now we have Renderer2?
What is the alternative to invokeElementMethod method in Renderer2?

like image 752
Mostafa Saadatnia Avatar asked Sep 21 '25 03:09

Mostafa Saadatnia


2 Answers

From the migration guide, it appears the following replacement should work

(this._el.nativeElement as any)['dispatchEvent'].apply(this._el.nativeElement, [event]);
like image 180
ruth Avatar answered Sep 22 '25 16:09

ruth


try this one:

export class OnlyNumberDirective {
  constructor(private _el: ElementRef) {
  }
  @HostListener('input', ['$event']) onInputChange(e) {
    let event: Event = document.createEvent("Event");
    event.initEvent('input', true, true);
    Object.defineProperty(event, 'target', { value: this._el.nativeElement, enumerable: true });
    this._el.nativeElement.dispatchEvent(event);
  }
}
like image 30
Mostafa Saadatnia Avatar answered Sep 22 '25 17:09

Mostafa Saadatnia