你好,我在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方法中也不起作用。)
答案 0 :(得分:1)
动态标签/ ng-container没有任何问题。
这里有Playground sample已通过iOS和Android进行了测试。如果您仍然遇到问题,请更新操场示例,以便我们重现您的问题。