【问题标题】:Load component via innerHtml in angular5在angular5中通过innerHtml加载组件
【发布时间】:2018-02-20 07:14:20
【问题描述】:

在我的应用程序中有 9 个小部件,每个小部件都有一个缩放选项。为了显示缩放选项,创建了通用缩放组件来显示缩放组件。

单击缩放选项时,选择的组件名称传递给缩放组件,并与组件名称一起创建 html 标记,并尝试通过 innerHtml 显示组件,但组件未出现在缩放组件中。

尝试使用 mat-progress-bar 静态 html

缩放组件.html

<div  style="border:2px solid green" #dataContainer></div>

缩放组件.component.ts

export class ProjectDetailsComponent implements OnInit {
  @ViewChild('dataContainer') dataContainer: ElementRef;
ngOnInit() {
    this.widget = "<mat-progress-bar></mat-progress-bar>";
    this.dataContainer.nativeElement.innerHTML = this.widget;
}
}

通过直接innerHTML通过错误

<div [innerHTML]="{{widget}}" style="border:2px solid green"></div>

解析器错误:在 [{{widget}}] 的第 0 列预期表达式出现插值 ({{}})

【问题讨论】:

    标签: angular


    【解决方案1】:

    第一个问题它的语法错误,因为你得到的错误是:

    解析器错误:在预期表达式的位置得到插值 ({{}}) 在 [{{widget}}] 的第 0 列

    更改自:

    [innerHTML]="{{widget}}"
    

    [innerHTML]="widget"
    

    第二个问题:动态加载组件不能使用 innerHtml ,你应该使用 componentFactoryResolver

    【讨论】:

    • 两种方式都试过了。,[innerHTML]="widget" => 没有错误但没有显示进度条。
    • @Govindaraj ,不能通过 innerHTML 添加组件,需要通过componentFactoryResolver加载它
    • @Govindaraj 你可以在这里找到解决方案吗?我现在面临一个非常相似的问题..
    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多