将 angular 个组件作为数组传递给 html 个模板
Pass angular components as array to html template
Context :-小型 Angular 应用程序(单个屏幕上只有两个选项卡)作为静态资产独立部署在 AWS S3 存储桶中。
给定 :- 我的一个 Angular(12) 容器组件有很长的标记,但由于创建网格,大部分代码都是重复的,我的列很少像下面这样连续
<div class="col">
<div class="row">
<div class="col">{{aStringTitle}}</div>
</div>
<div class="row">
<div class="col mt-2">
{{differentMarkupForEachColumn}}
</div>
</div>
</div>
我想要实现的目标 :- 我想使用 *ngFor
传递以下类型的数组来呈现这些列 :-
[
{name: 'First Ng Component', component: <SmallAngularComponent>},
{name: 'Second Ng Component', component: <AnotherSmallAngularComponent>},
...... and so on upto 7-8 smaller angular components
]
当我检查angular.io时,我在模板文档中找不到合适的示例。
实际问题 :- 如何将 Angular 组件数组传递给包含 Angular 组件的模板?
我不想要的 :- 中解释了替代方法,但我想渲染适当的 Angular 组件而不是一些随机的html.
因此,如果我理解正确的话,您想在 HTML 中动态创建这些组件。
为此,您只需使用 NgComponentOutlet
(有关更多信息,请参阅 here)。
您的代码如下所示:
component.ts
components = [
{ name: 'First Ng Component', component: SmallAngularComponent },
{ name: 'Second Ng Component', component: AnotherSmallAngularComponent },
// ...... and so on upto 7-8 smaller angular components
];
您可能已经注意到您不需要<>
组件。
component.html
<ng-container *ngFor="let entry of components">
<div class="col">
<div class="row">
<div class="col">{{ entry.name }}</div>
</div>
<div class="row">
<div class="col mt-2">
<ng-container *ngComponentOutlet="entry.component"></ng-container>
</div>
</div>
</div>
</ng-container>
如果您需要将参数传递给不同的组件,您可以查看 here 或者您需要以编程方式创建这些组件。
Context :-小型 Angular 应用程序(单个屏幕上只有两个选项卡)作为静态资产独立部署在 AWS S3 存储桶中。
给定 :- 我的一个 Angular(12) 容器组件有很长的标记,但由于创建网格,大部分代码都是重复的,我的列很少像下面这样连续
<div class="col">
<div class="row">
<div class="col">{{aStringTitle}}</div>
</div>
<div class="row">
<div class="col mt-2">
{{differentMarkupForEachColumn}}
</div>
</div>
</div>
我想要实现的目标 :- 我想使用 *ngFor
传递以下类型的数组来呈现这些列 :-
[
{name: 'First Ng Component', component: <SmallAngularComponent>},
{name: 'Second Ng Component', component: <AnotherSmallAngularComponent>},
...... and so on upto 7-8 smaller angular components
]
当我检查angular.io时,我在模板文档中找不到合适的示例。
实际问题 :- 如何将 Angular 组件数组传递给包含 Angular 组件的模板?
我不想要的 :-
因此,如果我理解正确的话,您想在 HTML 中动态创建这些组件。
为此,您只需使用 NgComponentOutlet
(有关更多信息,请参阅 here)。
您的代码如下所示:
component.ts
components = [
{ name: 'First Ng Component', component: SmallAngularComponent },
{ name: 'Second Ng Component', component: AnotherSmallAngularComponent },
// ...... and so on upto 7-8 smaller angular components
];
您可能已经注意到您不需要<>
组件。
component.html
<ng-container *ngFor="let entry of components">
<div class="col">
<div class="row">
<div class="col">{{ entry.name }}</div>
</div>
<div class="row">
<div class="col mt-2">
<ng-container *ngComponentOutlet="entry.component"></ng-container>
</div>
</div>
</div>
</ng-container>
如果您需要将参数传递给不同的组件,您可以查看 here 或者您需要以编程方式创建这些组件。