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

时间:2018-04-04 15:21:41

标签: javascript angular dom renderer

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

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

其中 timeVal 是一个字符串

正确选择了该元素,但 setValue 似乎根本无法正常工作

2 个答案:

答案 0 :(得分:19)

您需要使用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>');
  }
}

Live demo

答案 1 :(得分:0)

我更喜欢这样做:

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