invokeElementMethod в Renderer2 angular - PullRequest
1 голос
/ 29 марта 2020

посмотрите на эти фрагменты:

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

он использует Renderer, но он устарел, и теперь у нас есть Renderer2.now. Можете ли вы сказать мне, как заменить код с invokeElementMethod?

Ответы [ 2 ]

1 голос
/ 29 марта 2020

попробуйте это:

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);
  }
}
0 голосов
/ 29 марта 2020

Из руководства по миграции кажется, что следующая замена должна работать

(this._el.nativeElement as any)['dispatchEvent'].apply(this._el.nativeElement, [event]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...