如何访问 Angular 中对象数组内部的数组?
How to access array inside of an array of objects in Angular?
我有一个包含员工的对象数组,如下所示:
[
{
id: "1",
name: "name",
email: "email",
languages: ['english', 'german', 'spanish']
},
{
id: "2",
name: "name",
email: "email",
languages: ['english', 'spanish']
},
]
这个数组是我的网格的数据源。在同一网格的 'languages' 列中,我试图将这些语言列为 chips 元素。为了创建这些元素,我尝试使用 ngFor,如下所示(我正在使用 syncfusion):
<e-column field="languages" headerText="Languanges" type="array">
<ng-template #template let-data>
<div *ngFor="let employee of employeeList">
<ejs-chiplist id="chip" *ngFor="let lang of employee.languages">
<e-chips>
<e-chip text="{{lang}}" cssClass="e-primary"></e-chip>
</e-chips>
</ejs-chiplist>
</div>
</ng-template>
</e-column>
这有点管用,但是,由于 2 ngFor,它会多次显示语言。我该怎么办?解决这个问题的更好方法是什么?
您可以为所有员工删除一个 ngFor,因为您已经可以从网格的数据源访问模板中的数据,并且可以访问员工语言,如下所示
<e-column field="languages" headerText="Languanges" type="array">
<ng-template #template let-data>
<ejs-chiplist id="chip" *ngFor="let lang of data.languages">
<e-chips>
<e-chip text="{{lang}}" cssClass="e-primary"></e-chip>
</e-chips>
</ejs-chiplist>
</ng-template>
</e-column>
您还可以查看有关列模板的 Syncfusion 文档:https://help.syncfusion.com/angular/grid/columns#column-template
来自 Syncfusion 支持的问候,
您可以利用Grid的栏目模板功能,在Grid栏目中绑定芯片列表组件。在下面的代码示例中,我们在 ng-template 指令中使用了 ngFor,它是在芯片列表中绑定文本值的循环基础。请参考下面的代码示例和示例以获取更多信息。
[app.component.html]
<ejs-grid #grid [dataSource]='data' allowPaging='true' [pageSettings]='pageSettings'>
<e-columns>
<e-column field='id' headerText='Order ID' width='120' textAlign='Right' isPrimaryKey='true'></e-column>
<e-column field='name' headerText='Name' width='120' textAlign='Right'></e-column>
<e-column field='email' headerText='Email' width='150'></e-column>
<e-column headerText= 'Languages' width='120'>
<ng-template #template ngFor let-column [ngForOf]="data">
<ejs-chiplist id="chip-default">
<e-chips>
<ng-template ngFor let-lang [ngForOf]="column.languages">
<e-chip [text]="lang" cssClass="e-primary"></e-chip>
</ng-template>
</e-chips>
</ejs-chiplist>
</ng-template>
</e-column>
</e-columns>
</ejs-grid>
示例 link here
如果您需要进一步的帮助,请回复我们。
此致,
巴拉吉塞卡
我有一个包含员工的对象数组,如下所示:
[
{
id: "1",
name: "name",
email: "email",
languages: ['english', 'german', 'spanish']
},
{
id: "2",
name: "name",
email: "email",
languages: ['english', 'spanish']
},
]
这个数组是我的网格的数据源。在同一网格的 'languages' 列中,我试图将这些语言列为 chips 元素。为了创建这些元素,我尝试使用 ngFor,如下所示(我正在使用 syncfusion):
<e-column field="languages" headerText="Languanges" type="array">
<ng-template #template let-data>
<div *ngFor="let employee of employeeList">
<ejs-chiplist id="chip" *ngFor="let lang of employee.languages">
<e-chips>
<e-chip text="{{lang}}" cssClass="e-primary"></e-chip>
</e-chips>
</ejs-chiplist>
</div>
</ng-template>
</e-column>
这有点管用,但是,由于 2 ngFor,它会多次显示语言。我该怎么办?解决这个问题的更好方法是什么?
您可以为所有员工删除一个 ngFor,因为您已经可以从网格的数据源访问模板中的数据,并且可以访问员工语言,如下所示
<e-column field="languages" headerText="Languanges" type="array">
<ng-template #template let-data>
<ejs-chiplist id="chip" *ngFor="let lang of data.languages">
<e-chips>
<e-chip text="{{lang}}" cssClass="e-primary"></e-chip>
</e-chips>
</ejs-chiplist>
</ng-template>
</e-column>
您还可以查看有关列模板的 Syncfusion 文档:https://help.syncfusion.com/angular/grid/columns#column-template
来自 Syncfusion 支持的问候,
您可以利用Grid的栏目模板功能,在Grid栏目中绑定芯片列表组件。在下面的代码示例中,我们在 ng-template 指令中使用了 ngFor,它是在芯片列表中绑定文本值的循环基础。请参考下面的代码示例和示例以获取更多信息。
[app.component.html]
<ejs-grid #grid [dataSource]='data' allowPaging='true' [pageSettings]='pageSettings'>
<e-columns>
<e-column field='id' headerText='Order ID' width='120' textAlign='Right' isPrimaryKey='true'></e-column>
<e-column field='name' headerText='Name' width='120' textAlign='Right'></e-column>
<e-column field='email' headerText='Email' width='150'></e-column>
<e-column headerText= 'Languages' width='120'>
<ng-template #template ngFor let-column [ngForOf]="data">
<ejs-chiplist id="chip-default">
<e-chips>
<ng-template ngFor let-lang [ngForOf]="column.languages">
<e-chip [text]="lang" cssClass="e-primary"></e-chip>
</ng-template>
</e-chips>
</ejs-chiplist>
</ng-template>
</e-column>
</e-columns>
</ejs-grid>
示例 link here
如果您需要进一步的帮助,请回复我们。
此致,
巴拉吉塞卡