Динамическое изменение значения itemRorder в пользовательском интерфейсе RadListView в приложении Nativescript Angular - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь динамически изменить значение логического элемента itemReorder в списке пользовательского интерфейса RadListView для Nativescript Angular App, но безуспешно. Каждый раз я получаю эту ошибку: поведение не привязано к RadListView, используйте метод addbehavior RadListView, чтобы присоединить его.

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, появляется ошибка при выполнении этой функции.

Терминал журнала

Код

1 Ответ

0 голосов
/ 20 января 2019

Я думаю, что вы устанавливаете itemReorder на false слишком рано, возможно, компонент требует, чтобы он был true при событии itemReordered.Поскольку это еще не открытый исходный код, у меня мало информации об этом.Но простой способ - добавить тайм-аут,

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

Обновленная игровая площадка

...