Angular 对于Nativescript中的列表,*ngFor是否稳定?

Angular 对于Nativescript中的列表,*ngFor是否稳定?,angular,nativescript,Angular,Nativescript,编辑:我问了一个有关RadList视图当前状态的相关问题(它是否存在?) 原始问题: 对于Nativescript中的列表,是否允许使用*NGO 通常情况下,我发现有人推荐RadListView,但为了便于使用和定制列表,我更喜欢*ngFor。但是,我最近在使用*ngFor时遇到了一些小问题,所以我想确保它在最新的Nativescript中是稳定的 详情: 在我用Nativescript构建的iOS应用程序中,我有几个两级列表——带有类别的列表,然后是每个类别中的项目——比如: 我最初尝试从Pr

编辑:我问了一个有关RadList视图当前状态的相关问题(它是否存在?)

原始问题: 对于Nativescript中的列表,是否允许使用*NGO

通常情况下,我发现有人推荐RadListView,但为了便于使用和定制列表,我更喜欢*ngFor。但是,我最近在使用*ngFor时遇到了一些小问题,所以我想确保它在最新的Nativescript中是稳定的

详情:

在我用Nativescript构建的iOS应用程序中,我有几个两级列表——带有类别的列表,然后是每个类别中的项目——比如:

我最初尝试从Pro UI使用RadListView构建这种类型的列表,但我发现构建两级列表过于繁琐。我需要能够以各种方式加载和操作数据,而RadListView似乎是为有限的定制而设计的

这提到了“分组函数”作为使用RadListView的方法,但对于我所拥有的数据类型来说,这是一种不灵活的方法。就灵活性和可定制性而言,使用基本ListView更糟糕

所以我一直在使用basic*ngFor,比如:

<StackLayout>
    <StackLayout *ngFor="let item of things">
        <Label text="{{item.type}}" (tap)="clickToShowEntries()"></Label>
        <StackLayout *ngFor="let entry of item.type" style="margin-left: 80px">
            <Label text="{{entry}}"></Label>
        </StackLayout>   
    </StackLayout>
</StackLayout> 


使用*ngFor代替RadListView是否有问题?在更新到最新的Nativescript和CLI之后,我的应用程序上的列表似乎并不稳定——在测试中有几次,一些类别彼此随机重叠,屏幕上出现了故障。我没有重复那个错误,但它让我怀疑使用*ngFor是否有问题。

ListView和RadListView是使用本机方法处理列表的组件。两者都在使用回收和虚拟化(查看详细信息),这大大提高了性能。ListView和RadListView都支持多个模板和定制,甚至更多——它们与移动API保持一致,因为在幕后有本地元素在创建这些组件

Angular的ngFor是一个结构指令,对于将加载到移动设备上的大型列表,它没有进行优化


因此,简短的答案是使用<代码> ngfor < /COD>只针对短列表和<代码> ListVIEW <代码> />代码> RADISLVIEW 对于任何您可能认为重的东西。

< P>我将把Nick Lliev的答案作为可接受的答案,但我想注意:我发现了为什么NGO在升级到NATScript Script 5之后出现了“iBug”的iOS。在Nativescript 5.0+中,团队似乎做了一些更改,以使Nativescript在iOS的安全区域更好地工作。这会影响*ngFor等项目的样式/格式

在我的例子中,在ugprade之后,*ngFor列表曾经工作得很好,但现在开始做一些错误的事情,比如在屏幕上有随机的大空白,条目重叠


我可以通过在我的html中添加
iosvirflowsafearea=“false”
作为标题来纠正这个问题(比如
你可以自定义列表视图,所以我看不到你的问题?很好的描述。谢谢。你对如何做两个(甚至三个)有什么建议吗level RadListView?我必须从几个来源加载数据,将它们放在我上面提到的类别结构中,然后允许用户隐藏和显示类别。使用*ngFor很容易,但使用RadListView似乎很麻烦——如前所述,我以前看过“分组函数”但它似乎太有限了。最简单的方法是如果你能在另一个RadListView中有一个RadListView。但我一直没能做到这一点。listview的嵌套。RadListView或滚动视图(任何有滚动条的组件)不支持。不过,我会通过使用排序、排序和分组数据操作以及相应的UI来解决此问题。好的。谢谢。我将重新查看分组功能。我认为上次的问题是,我的页面必须在所有数据进入之前加载,这会产生问题。例如,数据提取的bc从不同的点,然后分析它,我可能不知道所有的类别马上,这似乎是有问题的分组功能。在RadListView中有一个*ngFor怎么样?像RadListView类别…*ngFor(类别项)…可能不是最优的,但是如果*ngFor部分不是太重,那么这可能会起作用。如果您使用
ngFor
来管理一个大列表的状态,那么您可能会遇到与仅使用
ngFor
相同的性能问题。根据我对NativeScript和通用本机应用程序de的了解一般来说,与网站相比,有时您必须重新考虑如何为最终用户布局信息。谢谢。这一切都很有帮助——并有助于解释为什么我在使用*ngFor创建列表时随机发现了一个小问题(bc,如果使用*ngFor,本机视图会遇到一个更大的列表)。我将看看如何使用RadListView。
<StackLayout>
    <StackLayout *ngFor="let item of things">
        <Label text="{{item.type}}" (tap)="clickToShowEntries()"></Label>
        <StackLayout *ngFor="let entry of item.type" style="margin-left: 80px">
            <Label text="{{entry}}"></Label>
        </StackLayout>   
    </StackLayout>
</StackLayout>