如何在 Angular-Nativesript ListView 中输出 object 的列表及其嵌套的 object 列表?
How to output a List of object and its nested list of object inside Angular-Nativesript ListView?
美好的一天,
我在 angular-nativescript 共享代码项目中遇到问题。
模型和组件工作正常,但输出不符合我的预期
我认为问题出在我看来(Homecomponent.tns.html)
我有一个 angular 模型包含 object(products) 列表在 object(ProductGroup) 中,这里是结构
产品组:
export class ProductGroup {
public groupName : string;
public products : ProductItem[];
}
产品项目:
export class ProductItem {
public itemDescription : string;
public remarks : string;
}
我已经pre-populate它在我的组件 ngOnInit
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css'],
})
export class HomeComponent implements OnInit {
public productGroups : ProductGroup[];
ngOnInit() {
///initiate group
this.productGroups = [];
///insert some items for testing
this.productGroups.push
(
{
groupName : "Cars",
products : [
{ itemDescription : "Car", remarks : "" },
{ itemDescription : "Car1",remarks : "" },
{ itemDescription : "Car2",remarks : "" }
]
},
{ groupName : "Trucks",products : [
{ itemDescription : "Truck", remarks : "" },
{ itemDescription : "Truck1",remarks : "" },
{ itemDescription : "Truck2", remarks : ""}]
}
);
//trying to check if it is properly populated
console.log(this.productGroups);
}
}
我已经 console.log 了产品组,它似乎已经填充并且应该可以正常工作。
但是我试图用组名的 header 输出列表视图中的所有 productItem 但它只输出这样
_________________________________________________
Cars
Car
_________________________________________________
Trucks
Truck
_________________________________________________
这是我的 components.tns.html
<ActionBar>
<ActionItem title="Test"></ActionItem>
</ActionBar>
<StackLayout>
<GridLayout columns="*" >
<ListView [items] = "productGroups">
<ng-template let-group="item" >
<StackLayout>
<Label [text]="group.groupName"></Label>
<StackLayout>
<ListView [items] = "group.products">
<ng-template let-products="item">
<Label [text]="products.itemDescription"></Label>
</ng-template>
</ListView>
</StackLayout>
</StackLayout>
</ng-template>
</ListView>
</GridLayout>
</StackLayout>
我希望我的问题对你们有意义。我只是期待这样的输出
_________________________________________________
Cars
Car
Car1
Car2
_________________________________________________
Trucks
Truck
Truck1
Truck2
_________________________________________________
希望有人能帮助我解决这个问题
提前感谢您的帮助
我已经为您创建了一个示例游乐场 here。它在 ios.
上运行良好
<GridLayout>
<ListView class="list-group" [items]="productGroups" (itemTap)="onItemTap($event)"
style="height:1250px">
<ng-template let-group="item">
<StackLayout >
<Label [text]="group.groupName"></Label>
<StackLayout>
<ListView [items]="group.products">
<ng-template let-products="item">
<Label [text]="products.itemDescription"></Label>
</ng-template>
</ListView>
</StackLayout>
</StackLayout>
</ng-template>
</ListView>
</GridLayout>
试试 nativescript-accordion 插件。如果您希望默认展开所有项目,请创建一个包含所有索引的数组并将其应用于 selectedIndexes
属性.
tns plugin add nativescript-accordion
美好的一天,
我在 angular-nativescript 共享代码项目中遇到问题。 模型和组件工作正常,但输出不符合我的预期 我认为问题出在我看来(Homecomponent.tns.html)
我有一个 angular 模型包含 object(products) 列表在 object(ProductGroup) 中,这里是结构
产品组:
export class ProductGroup {
public groupName : string;
public products : ProductItem[];
}
产品项目:
export class ProductItem {
public itemDescription : string;
public remarks : string;
}
我已经pre-populate它在我的组件 ngOnInit
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css'],
})
export class HomeComponent implements OnInit {
public productGroups : ProductGroup[];
ngOnInit() {
///initiate group
this.productGroups = [];
///insert some items for testing
this.productGroups.push
(
{
groupName : "Cars",
products : [
{ itemDescription : "Car", remarks : "" },
{ itemDescription : "Car1",remarks : "" },
{ itemDescription : "Car2",remarks : "" }
]
},
{ groupName : "Trucks",products : [
{ itemDescription : "Truck", remarks : "" },
{ itemDescription : "Truck1",remarks : "" },
{ itemDescription : "Truck2", remarks : ""}]
}
);
//trying to check if it is properly populated
console.log(this.productGroups);
}
}
我已经 console.log 了产品组,它似乎已经填充并且应该可以正常工作。
但是我试图用组名的 header 输出列表视图中的所有 productItem 但它只输出这样
_________________________________________________
Cars
Car
_________________________________________________
Trucks
Truck
_________________________________________________
这是我的 components.tns.html
<ActionBar>
<ActionItem title="Test"></ActionItem>
</ActionBar>
<StackLayout>
<GridLayout columns="*" >
<ListView [items] = "productGroups">
<ng-template let-group="item" >
<StackLayout>
<Label [text]="group.groupName"></Label>
<StackLayout>
<ListView [items] = "group.products">
<ng-template let-products="item">
<Label [text]="products.itemDescription"></Label>
</ng-template>
</ListView>
</StackLayout>
</StackLayout>
</ng-template>
</ListView>
</GridLayout>
</StackLayout>
我希望我的问题对你们有意义。我只是期待这样的输出
_________________________________________________
Cars
Car
Car1
Car2
_________________________________________________
Trucks
Truck
Truck1
Truck2
_________________________________________________
希望有人能帮助我解决这个问题 提前感谢您的帮助
我已经为您创建了一个示例游乐场 here。它在 ios.
上运行良好<GridLayout>
<ListView class="list-group" [items]="productGroups" (itemTap)="onItemTap($event)"
style="height:1250px">
<ng-template let-group="item">
<StackLayout >
<Label [text]="group.groupName"></Label>
<StackLayout>
<ListView [items]="group.products">
<ng-template let-products="item">
<Label [text]="products.itemDescription"></Label>
</ng-template>
</ListView>
</StackLayout>
</StackLayout>
</ng-template>
</ListView>
</GridLayout>
试试 nativescript-accordion 插件。如果您希望默认展开所有项目,请创建一个包含所有索引的数组并将其应用于 selectedIndexes
属性.
tns plugin add nativescript-accordion