【问题标题】:Add HTML elements into Angular Component将 HTML 元素添加到 Angular 组件中
【发布时间】:2019-03-28 12:20:01
【问题描述】:

如何在运行时将 Angular html 元素添加到组件中。

让html元素是一个具有角度表达的H1标签。

<h1>{{testHeading}}</h1>

我想将此标签插入到组件中。坚持它的动态角度属性。 这里的“testHeading”是一个角度变量。

我正在尝试使用以下方法添加元素:

addComponent(component:any){
    let componentRef = this.componentFactoryResolver
    .resolveComponentFactory(component)
    .create(this.injector);

    this.appRef.attachView(componentRef.hostView);

    const domElem = (componentRef.hostView as EmbeddedViewRef<any>)
    .rootNodes[0] as HTMLElement;

    var newcontent = document.createElement('div');
    newcontent.innerHTML = `<h1>${this.demoText}</h1>`;
    domElem.appendChild(newcontent);

    document.getElementById("testid").appendChild(domElem);
}

【问题讨论】:

标签: html angular components


【解决方案1】:

在模板中创建一个容器

<div #container></div>

创建容器引用

ViewChild('container') container: ElementRef;

在视图初始化之后,您可以访问容器元素,例如通过

container.nativeElement.innerHTML = `<h1>${yourString}</h1`;

【讨论】:

  • 很好的解决方案,亲爱的兄弟,它工作正常。但我怀疑${yourString} 是什么。我从来没有使用过这样的表达式,我总是使用 {{yourString}}。您能否解释一下或分享一个参考链接,我将了解${yourString} 方法。
  • 不客气 :) 因为您似乎是 SO 新手:如果解决方案对您有用,您也应该排除相关答案。
  • {{yourString}}.html 中的插值。 ${yourString}.ts 中的插值。
  • @HarunurRashid 这实际上是.ts 文件。
  • @ngfelixl,如果我需要在需要插入 HTML 元素 (

    ) 的子组件中声明变量“yourString”,则表达式 ${yourString}` 中还有一件事。然后它将显示父组件中未定义“yourString”的错误。有什么解决办法吗?

猜你喜欢
  • 2022-01-02
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 2016-01-01
  • 1970-01-01
  • 2017-02-11
相关资源
最近更新 更多