繁体   English   中英

Angular Renderer2 - destroy()如何工作?

[英]How does Angular Renderer2 - destroy() work?

Angular Renderer2的destroy()方法如何工作?

import { Directive, ElementRef, Renderer2, OnInit } from '@angular/core'

@Directive({
  selector: '[destroy]'
})

export class Destroy implements OnInit {
  constructor(private elRef: ElementRef, private renderer: Renderer2) {}

  ngOnInit(){
    const currentElement = this.elRef.nativeElement;
    const nextEl = this.renderer.nextSibling(currentElement);
    this.renderer.addClass(nextEl, 'red');
    this.renderer.destroy();
  }   


}

在这里,我希望destroy()完全符合angular.io所说的:

Implement this callback to destroy the renderer or the host element.

然后我在destroy()之后添加这两行,并且setStyle方法适用于这两个元素。

  ngOnInit(){
    const currentElement = this.elRef.nativeElement;
    const nextEl = this.renderer.nextSibling(currentElement);
    this.renderer.addClass(nextEl, 'red');
    this.renderer.destroy();
    this.renderer.setStyle(currentElement, 'background-color', 'blue')
    this.renderer.setStyle(nextEl, 'background-color', 'blue')    
  }   

我希望这些方法在destroy之后不起作用,因为我希望主机元素或渲染器被销毁。

我错过了什么?

Stackblitz示例:

https://stackblitz.com/edit/angular-82bgqz?embed=1&file=src/app/destroy.directive.ts

对于DOM渲染器, destroy()是一个不执行任何操作的空方法:

destroy(): void {}

它只是DOM API的一个薄包装器。

如果你想要实现自己的自定义渲染器,销毁它可能会更有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM