Я пытаюсь вызывать компоненты со строковыми ключами в 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, но он не работает для угловых компонентов, как в этом примере.
HTML
<div [innerHTML]="pageDetail"></div>
машинопись
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);
}
Вы можете догадаться, что сейчас это выглядит не очень хорошо. Если это возможно, я хочу сделать короче и очистить атрибуты "* ngIf" в html.
У вас есть идеи по этому поводу?
как то так
<div class="row column-seperation" tab.componentName>
<app-tab.componentName></app-tab.componentName>
</div>
Примечание: извините за мои грамматические ошибки.