ListView в tabview не обновляется - PullRequest
       69

ListView в tabview не обновляется

0 голосов
/ 11 октября 2018

Здравствуйте, у меня довольно странная проблема с listView в TabView.Я трачу весь день на решение этой проблемы, но безрезультатно.Из-за отсутствия обновления listView (ngZone не помогло), я должен сделать обновление программно в listView.Это работает, но проблема в том, что когда я захожу на эту страницу с другой страницы через маршрутизатор, то вводится через предыдущую страницу конструктора.У меня есть страница входа, где я делаю:

this.router.navigate(["/home"]);

И в home.component.ts конструктор выглядит так:

constructor(ngZone: NgZone, private page: Page) 

, тогда я попытался позвонить:

var listview:ListView= <ListView> page.getViewById("listView1");

но он возвращается неопределенно (если страница входа не существует и существует только домашняя страница, она работает правильно).Когда я пытался получить представление со страницы входа в систему, я получал представление ...

Кто-нибудь может дать мне совет, что не так?Я много чего пробую, что нашел, но ничего не получается ... Спасибо за ваш ответ.

РЕДАКТИРОВАТЬ: Добавлен фрагмент кода: home.component.html

<GridLayout class="page">
    <TabView height="100%" (selectedIndexChange)="onTabChanged($event)" class="content p-20" >
        <ng-container *ngFor="let itema of objectKeys(site)" >
            <StackLayout *tabItem="{title: itema}">
                    <ListView [id]="itema" class="list-group" [items]="getData(itema)" (itemTap)="onItemTap($event)">
                        <ng-template let-item >
                            <GridLayout class="list-group-item" rows="*" columns="auto, *">
                                <Label row="0" col="0" [text]="item.name"></Label>
                                </Image>
                            </GridLayout>
                        </ng-template>
                    </ListView>
                </GridLayout>
            </StackLayout>
        </ng-container> 

    </TabView>
</GridLayout>

home.component.ts part:

   ngOnInit(): void {
            getJSON(url).then((r: any) => {
                console.log(r);
                this.ngZone.run(() => {
                    this.site = r;
                });
                //this part added because ngZone didn't work
                var listview: ListView = <ListView>this.page.getViewById(objectKeys(this.site)[0]);
                listview.refresh();
            }, (e) => {
                //TODO handle exception
                console.log(e);
            });
        }

Я думаю, что проблема возникает из-за того, что ListView создается динамически (обновление не работает в методе onTabChange.)

1 Ответ

0 голосов
/ 12 октября 2018

Я не вижу проблем с динамическими вкладками / ng-container.

Вот пример Playground , протестированный как на iOS, так и на Android.Если у вас все еще есть проблемы, обновите пример игровой площадки, где мы можем воспроизвести вашу проблему.

...