angular - Nativescript Listview在IOS上的不同行为
问题描述
我正在使用 RadListView 组件 Nativscript-ui-listview。在列表中,我显示了我自己构建的小部件。在 Android 上没有问题,只要我打开列表,它们就会全部加载并显示出来。但是在 IOS 上,在我滚动过去然后滚动回它们后会加载一些负载,而有些则根本不会显示。左图是安卓,右图是IOS。该列表显示三个小部件,一个图表小部件、地图和一个带有数字的小部件。如何让它们在 IOS 上显示?
@Component({
selector: 'app-newlist',
templateUrl: './new-widgets-list.component.html',
styleUrls: ['./new-widgets-list.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush,
moduleId: module.id,
})
export class NewListComponent implements OnInit {
public title: String = 'Widgets';
public widgetsListSubscription = new Subscription;
public widgets$: ObservableArray < Widget > ;
public _sourceDataItems: ObservableArray < Widget > ;
public _sourceDataItems2: ObservableArray < Widget > ;
public processing$ = new BehaviorSubject < boolean > (true);
public listview: RadListView;
public layout: ListViewLinearLayout;
constructor(public page: Page,
private readonly store: Store < AppState > ) {
this.initData();
}
ngOnInit(): void {
this.widgets$ = new ObservableArray < Widget > ();
}
public get dataItems(): ObservableArray < Widget > {
return this._sourceDataItems2;
}
private initData(): void {
this._sourceDataItems = new ObservableArray < Widget > ();
const data = this.store.pipe(
select(getDisplayedWidgets),
map(idmap => Object.values(idmap))
);
data.subscribe(list => this._sourceDataItems.push(list));
this._sourceDataItems2 = this._sourceDataItems;
}
}
<GridLayout tkExampleTitle tkToggleNavButton>
<app-action-bar [title]="title"></app-action-bar>
<RadListView [items]="dataItems" id="rlv">
<ng-template tkListItemTemplate let-item="item">
<StackLayout orientation="vertical">
<GridLayout columns="auto">
<app-widgets-picker horizontalAlignment="left" [widget]="item"></app-widgets-picker>
</GridLayout>
</StackLayout>
</ng-template>
<ListViewLinearLayout *appIfIos tkListViewLayout itemHeight="250"></ListViewLinearLayout>
</RadListView>
</GridLayout>
解决方案
我的数据在出现故障时没有显示在 Android 上。我按照@Narendra 所说的做了,并在 ngOnChanges 函数中执行了相应的代码。
ngOnChanges(){
if (this.item.profilePhoto === undefined) this.setAnonimProfilePhoto();
if (!this.item.isOnline) this.userOfflineFromNow();
this.getCityName();
}
@Narendra,谢谢。
推荐阅读
- mysql - 如何在将每个用户的记录插入同一张表之前检查现有记录?
- c# - AWS AMI 中的 Windows DPAPI 失败,访问被拒绝
- java - 更改 JButton 的大小
- html - 将无效/有效样式添加到引导输入组前置
- python - 当我将 Qsltter 移动到带有 matplotlib 图形的边缘时,如何避免 PyQt5 崩溃?
- sql - 为什么我的 SQL 在使用 INSERT INTO 时会跳过某些记录?
- python - Azure Databricks 中的 Python 版本
- ibm-midrange - 如何根据RPGLE中变量内容中的某个符号对字符串变量的内容进行细分
- ghostscript - 如何在 ghospcl 中指定字体映射
- c - 如何在二维数组中正确实现插入排序算法?