如何使用Renderer2在Angular中设置本机元素的值?

Don*_*ant 10 javascript dom renderer angular

我想设置nativeElement的innerText/innerHTML/textContent?

this.render.setValue(this.nativeCloneLi.querySelector('.down .inn'), timeVal);
Run Code Online (Sandbox Code Playgroud)

其中timeVal是一个字符串

正确选择了元素,但setValue似乎根本不起作用

Tom*_*ula 20

你需要使用renderer.setProperty()而不是renderer.setValue().

import { Component, Renderer2, AfterViewInit, ElementRef, ViewChild } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `
  <div #el></div>
  `,
  styleUrls: [ './app.component.css' ]
})
export class AppComponent implements AfterViewInit {
  @ViewChild('el') el: ElementRef;

  constructor(private renderer: Renderer2) {}

  ngAfterViewInit() {
    this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '<h1>Hello world</h1>');
  }
}
Run Code Online (Sandbox Code Playgroud)

现场演示

  • @abyrne85,@calbear47 不,没有必要。`Renderer2` 提供了一个 API,以与平台无关的方式操作本机元素。这意味着它将您从直接 DOM 访问中解放出来,并允许您以抽象方式对其进行操作。但只要您只阅读而不更改任何内容,您就可以直接使用本机元素(如果支持对它们的访问)或提供具有您缺少的功能的自定义“Renderer2”实现。实际上,Angular 不提供任何从 DOM 获取任何内容的支持(除了 `ElementRef` 和 [events](https://angular.io/api/core/Renderer2#listen))。 (2认同)