gpt4 book ai didi

html - 如何使用angular 7在html中调用与字符串 "component name"相同的组件

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:41 24 4
gpt4 key购买 nike

我正在尝试使用 Angular 7 中的字符串键调用组件。因为我的服务为我提供了组件过滤器将要在每个用户的页面上显示的键。我可以制作这个过滤器,尤其是在 html 中吗?

<pg-tab *ngFor="let tab of tabs; let index = index">
<ng-template #TabHeading>
{{tab.headerText}}
<a (click)="removeTab(index)" style="padding: 5px;"><i class="fa fa-times fa-lg" style="color:orangered;"></i></a>
</ng-template>
<div class="row column-seperation" *ngIf="tab.componentName === 'grid-sample'">
<app-grid-sample></app-grid-sample>
</div>

<div class="row column-seperation" *ngIf="tab.componentName === 'pdf-export-sample'">
<app-pdf-export-sample></app-pdf-export-sample>
</div>
<div class="row column-seperation" *ngIf="tab.componentName === 'notify-sample'">
<app-notify-sample></app-notify-sample>
</div>
<div class="row column-seperation" *ngIf="tab.componentName === 'loader-sample'">
<app-loader-sample></app-loader-sample>
</div>
<div class="row column-seperation" *ngIf="tab.componentName === 'tt-form-elements'">
<app-tt-form-elements></app-tt-form-elements>
</div>
<div class="row column-seperation" *ngIf="tab.componentName === 'tt-layouts'">
<app-tt-layouts></app-tt-layouts>
</div>
</pg-tab>

我搜索了 innerHtml 属性,但它不适用于该示例中的 Angular 组件。

html

<div [innerHTML]="pageDetail"></div>

typescript

private _pageDetail: string = '<app-tab-page1 [tab]="tab" [tabsLength]="tabs.length" [tabs]="tabs"></app-tab-page1><button>Naber</button>';

public get pageDetail(): SafeHtml {
return this._sanitizer.bypassSecurityTrustHtml(this._pageDetail);
}

您可以猜到它现在看起来不太好。如果可能的话,我想缩短并清理 html 中的“*ngIf”属性。

你有什么想法吗?

像这样

<div class="row column-seperation" tab.componentName>
<app-tab.componentName></app-tab.componentName>
</div>

注意:抱歉我的语法错误。

最佳答案

您可以创建一个名称如下的动态组件:

标签项是一个指令:

@ViewChildren('tabItem', {read: ViewContainerRef} ) tabItem:  QueryList<ViewContainerRef>;

这里创建动态组件:

    const factories = Array.from(this.componentFactoryResolver['_factories'].keys());
const factoryClass = <Type<any>>factories.find((x: any) => x.name === dynamicComponentName);
if (factoryClass !== undefined) {
const factory = this.componentFactoryResolver.resolveComponentFactory(factoryClass);
const ref = this.tabItem.viewContainerRef;
ref.createComponent(factory);
}

您还可以查看 Angular 文档:dynamic component

关于html - 如何使用angular 7在html中调用与字符串 "component name"相同的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55474038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com