gpt4 book ai didi

Angular - 如何在 FormArray 中重新排序项目?

转载 作者:行者123 更新时间:2023-12-03 14:36:04 27 4
gpt4 key购买 nike

我有一个包含一堆控件的大表单。在这个表单中,我有一组表单组,它们是我的“规则”。

我需要添加更改规则顺序的功能,不仅是它的值,还有它在 DOM 中的可视位置。

这是我的设置:

enter image description here

这些规则中的每一个都是具有自己的表单组等的组件。它们最初显示的顺序基于它们当前存储的处理顺序值。

在每条规则下方,我都有一个按钮来向上或向下移动规则,这正是我正在处理的。

对于响应式表单,表单组的索引是否决定了它在组件 UI 中的位置?例如,如果我想向上移动规则,我可以将该表单组索引更改为 currentIndex-1也许上面的规则是 +1为了换地方?

我的目标是能够在 UI 上上下移动这些组件。由于此页面上的规则数量,我试图远离拖放库。

更新:

这是我的设置的一个plunker:

https://plnkr.co/edit/S77zywAa7l900F0Daedv?p=preview

最佳答案

FormArray上有几种方法喜欢 removeAtinsert这可以帮助您实现目标。

模板.html

<button class="button" (click)="move(-1, i)">Move Up</button> &nbsp; 
<button class="button" (click)="move(1, i)">Move Down</button>

组件.ts

move(shift, currentIndex) {
const rules = this.rulesForm.get('ruleData.rules') as FormArray;

let newIndex: number = currentIndex + shift;
if(newIndex === -1) {
newIndex = rules.length - 1;
} else if(newIndex == rules.length) {
newIndex = 0;
}

const currentGroup = rules.at(currentIndex);
rules.removeAt(currentIndex);
rules.insert(newIndex, currentGroup)
}

Plunker Example

关于Angular - 如何在 FormArray 中重新排序项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46459266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com