【发布时间】:2021-03-19 19:53:07
【问题描述】:
我正在尝试使用ion-reorder 对页面中的某些项目进行重新排序。这些项目按组进行组织,因此一个组有多个项目。我想在组内组织这些项目,但更重要的是我希望能够将项目从一个组更改为另一个。
我目前面临两个问题:
- 我无法更新数组,因此项目订单在更改时无法正确显示。
- 我无法将项目移出它的组,因此我无法移动到另一个组。
html
<ion-content>
<ion-list *ngFor='let group of groupArray'>
<ion-reorder-group (ionItemReorder)="doReorder($event)" disabled="false">
<ion-list-header>{{group.name}}</ion-list-header>
<ion-item *ngFor='let item of group.items'>
<ion-reorder slot="start"></ion-reorder>
<ion-label>
{{item.name}}
</ion-label>
</ion-item>
</ion-reorder-group>
</ion-list>
</ion-content>
打字稿
interface Item {
id: number,
name: string
}
interface Group {
name: string,
items: Item[]
}
interface GroupArray extends Array<Group>{}
...
private groupArray: GroupArray = [
{
name: 'FirstGroup',
items: [
{
id: 1,
name: 'FirstItem'
},{
id: 2,
name: 'SecondItem'
},{
id: 3,
name: 'ThirdItem'
}
]
},
{
name: 'SecondGroup',
items: [
{
id: 4,
name: 'FourthItem'
},{
id: 5,
name: 'FifthItem'
},{
id: 6,
name: 'SixthItem'
}
]
}
];
/** Reorder */
doReorder(ev: CustomEvent<ItemReorderEventDetail>) {
this.groupArray = ev.detail.complete(this.groupArray);
}
我尝试将<ion-reorder-group> 移动到多个位置,但这是我唯一设法移动正确项目的位置。如果我向上移动,在<ion-list> 上方,整个列表变得可拖动,我无法移动该项目。
我知道发生这种情况是因为 <ion-reorder-group> 被创建了 2 次,但我无法想办法只创建一次并保持相同的方面,这与我链接的文档页面完全相同。不同之处在于它们在那里单独加载项目,而组只是另一个可以拖动的项目。
我认为另一个问题与complete() 的工作方式有关。虽然它期望any[] 作为参数,但我不认为它是为了支持复杂的结构,只是一个简单的数组。
我该如何解决这两个问题?
我正在使用 Ionic 5 和 Angular 10
【问题讨论】: