tabview中的ListView不会更新

时间:2018-10-11 18:26:37

标签: angular listview nativescript angular2-nativescript nativescript-angular

你好,我在TabView中的listView有一个非常奇怪的问题。我整天都在解决这个问题,但是没有结果。由于不刷新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.components.ts部分:

   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 :(得分:1)

动态标签/ ng-container没有任何问题。

这里有Playground sample已通过iOS和Android进行了测试。如果您仍然遇到问题,请更新操场示例,以便我们重现您的问题。