RadListView UI 在 Nativescript Angular 应用程序中动态更改 itemRorder 值

Dynamic change of itemRorder value in RadListView UI in Nativescript Angular app

我正在尝试动态更改 RadListView Ui 列表中 Nativescript Angular 应用程序的 itemReorder 布尔值,但没有成功。我每次都会收到此错误:行为未附加到 RadListView,请使用 RadListView addbehavior 方法附加它。

HTML:

<GridLayout  tkExampleTitle tkToggleNavButton class="proposedLettersRow">
        <RadListView #itemReord [items]="items" selectionBehavior="LongPress" reorderMode = "Drag" [itemReorder]="itemReorder" (itemReordered)="onItemReordered($event)" multipleSelection= "false"
                    >
                <ng-template tkListItemTemplate let-item="item">
                    <GridLayout class="listItemTemplateGrid" >
                        <Label
                            [text]="item"
                            [ngClass]="!isWin ?  'proposed' : 'proposedIsDone'"
                            class="list-group-item ">
                        </Label>
                    </GridLayout>
                </ng-template>

                <ListViewGridLayout tkListViewLayout
                                    scrollDirection="Vertical"
                                    height="150"
                                    ios:itemHeight="150"
                                    spanCount="7"
                                    horizontalAlignment="center">
                </ListViewGridLayout>
        </RadListView>
    </GridLayout>

打字稿:

一开始this.itemReorder设置为true,然后一个函数来把它改成false,执行这个函数就报错

Terminal log

Code

我认为您将 itemReorder 设置为 false 为时过早,可能是组件在 itemReordered 事件时要求它为 true。由于它还没有开源,所以我没有太多这方面的信息。但是一个简单的解决方法是添加超时,[​​=16=]

public youWin() {
    if (this.newIndex < this.oldIndex) {
        setTimeout(() => {
            this.itemReorder = false;
        }, 100);
    }
}

Updated Playground