如何使用 Renderer2 设置 Angular 中原生元素的值?

问题描述 投票:0回答:2

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

this.render.setValue(this.nativeCloneLi.querySelector('.down .inn'), timeVal);

其中 timeVal 是一个字符串

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

javascript angular dom angular-renderer2
2个回答
35
投票

您需要使用

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>');
  }
}

现场演示


1
投票

我更喜欢这样做:

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() {
    const h1 = this.renderer.createElement('h1');
    const text = this.renderer.createText('Hello world');

    this.renderer.appendChild(h1, text);
    this.renderer.appendChild(this.el.nativeElement, div);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.