3

上下文Angular 项目
我有以下代码段:

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?
方法 in的替代invokeElementMethod方法是Renderer2什么?

4

2 回答 2

1

迁移指南看来,以下替换应该可以工作

(this._el.nativeElement as any)['dispatchEvent'].apply(this._el.nativeElement, [event]);
于 2020-03-29T08:09:40.010 回答
1

试试这个:

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);
  }
}
于 2020-03-29T09:01:25.743 回答