В качестве снаряжения вы можете поместить все свои кнопки в шаблоны в содержимое родительского компонента, а затем перебрать все шаблоны, чтобы отобразить их как содержимое.
App.component.html
<parent_component>
<ng-template>
<button> // first button </button>
</ng-template>
<ng-template>
<button> // second button </button>
</ng-template>
<ng-template>
<button> // third button </button>
</ng-template>
</parent_component>
Parent.component.ts
export class ParentComponent {
@ContentChildren(TemplateRef) templateRefs: QueryList<TemplateRef>;
}
Parent.component.html
<div *ngFor="let x of templateRefs">
<dxi-item location='after' class="osii-item-content">
<ng-container *ngTemplateOutlet="x"></ng-container>
</dxi-item>
</div>
Лучшее решение (это не совсем то, что вы просили) - передатьодин шаблон для ваших кнопок, а затем массив с содержимым кнопок.В этом примере я передаю массив строк, но это, безусловно, могут быть целые объекты.
App.component.html
<parent_component [texts]=['first', 'second', 'third'>
<ng-template let-x @BtnTemplate>
<button> {{x}} </button>
</ng-template>
</parent_compnent>
Parent.component.ts
export class ParentComponent {
@Input() texts: string[];
@ContentChild("BtnTemplate") btnTemplateRef: TemplateRef;
}
Parent.component.html
<div *ngFor="let x of texts">
<dxi-item location='after' class="osii-item-content">
<ng-container *ngTemplateOutlet="btnTemplateRef"
context: { $implicit: x }">
</ng-container>
</dxi-item>
</div>