如何获取数组列表中项目的索引并导航详细信息页面 ionic 4
How to get index of an item in array list and navigate details page ionic 4
我有一个数组 table 的列表,我想获得它们的索引值并重定向到我的详细信息页面,当我点击一个项目时,我得到一个 error
"Cannot read property 'sTelephone' of undefined"
我很困惑我的代码如下
在我的 list.component.ts 我有
itemSelected(item) {
this.router.navigate(['/details', item]);
console.log(item);
}
list.component.html
<ion-list >
<ion-searchbar type="text" [(ngModel)]='searchKeyword' autocomplete="on" placeholder="search">
</ion-searchbar>
<ion-item (click)="itemSelected(item)" *ngFor="let item of ListData | myfilter : searchKeyword; let i = index" >
<ion-label>
<h2>{{item.Name}}</h2>
<p>{{item.Description}}</p>
</ion-label>
</ion-item>
</ion-list>
detail.component.ts
ContactInfos: any;
item: any;
this.route.queryParams.subscribe( params => {
this.item = params;
this.ContactInfos = this.WS.ListData[this.item];
console.log(this.ContactInfos);
});
details.component.html
<ion-content>
<ion-list>
<ion-item>
<ion-label>
<h2>{{ContactInfos.sTelephone}}</h2>
</ion-label>
</ion-item>
</ion-list>
</ion-content>
提前致谢! :)
尝试使用安全导航运算符(?)
<h2>{{ContactInfos?.sTelephone}}</h2>
在您的列表组件中
<ion-list >
<ion-searchbar type="text" [(ngModel)]='searchKeyword' autocomplete="on" placeholder="search">
</ion-searchbar>
<ion-item (click)="itemSelected(item,i)" *ngFor="let item of ListData | myfilter : searchKeyword; let i = index" >
<ion-label>
<h2>{{item.Name}}</h2>
<p>{{item.Description}}</p>
</ion-label>
</ion-item>
</ion-list>
list.component.ts
itemSelected(item,i) {
this.router.navigate(['/details', i]);
console.log(item);
}
使用这段代码你可以传递数组索引,你可以在详情页中通过索引值访问。
根据我的建议,您可以传递项目 ID,并且可以通过 ID 访问详细信息页面中的特定项目。不要在详情页面加载全部数据,因为只有商品详情。
在您的 list.component.ts
上试试这个
this.router.navigate(['/details', { data: JSON.stringify(item) }]);
在你的detail.component.ts
let data = this.activatedRoute.snapshot.paramMap.get('data');
this.item = JSON.parse(data);
console.log(this.item);
我有一个数组 table 的列表,我想获得它们的索引值并重定向到我的详细信息页面,当我点击一个项目时,我得到一个 error
"Cannot read property 'sTelephone' of undefined"
我很困惑我的代码如下
在我的 list.component.ts 我有
itemSelected(item) {
this.router.navigate(['/details', item]);
console.log(item);
}
list.component.html
<ion-list >
<ion-searchbar type="text" [(ngModel)]='searchKeyword' autocomplete="on" placeholder="search">
</ion-searchbar>
<ion-item (click)="itemSelected(item)" *ngFor="let item of ListData | myfilter : searchKeyword; let i = index" >
<ion-label>
<h2>{{item.Name}}</h2>
<p>{{item.Description}}</p>
</ion-label>
</ion-item>
</ion-list>
detail.component.ts
ContactInfos: any;
item: any;
this.route.queryParams.subscribe( params => {
this.item = params;
this.ContactInfos = this.WS.ListData[this.item];
console.log(this.ContactInfos);
});
details.component.html
<ion-content>
<ion-list>
<ion-item>
<ion-label>
<h2>{{ContactInfos.sTelephone}}</h2>
</ion-label>
</ion-item>
</ion-list>
</ion-content>
提前致谢! :)
尝试使用安全导航运算符(?)
<h2>{{ContactInfos?.sTelephone}}</h2>
在您的列表组件中
<ion-list >
<ion-searchbar type="text" [(ngModel)]='searchKeyword' autocomplete="on" placeholder="search">
</ion-searchbar>
<ion-item (click)="itemSelected(item,i)" *ngFor="let item of ListData | myfilter : searchKeyword; let i = index" >
<ion-label>
<h2>{{item.Name}}</h2>
<p>{{item.Description}}</p>
</ion-label>
</ion-item>
</ion-list>
list.component.ts
itemSelected(item,i) {
this.router.navigate(['/details', i]);
console.log(item);
}
使用这段代码你可以传递数组索引,你可以在详情页中通过索引值访问。 根据我的建议,您可以传递项目 ID,并且可以通过 ID 访问详细信息页面中的特定项目。不要在详情页面加载全部数据,因为只有商品详情。
在您的 list.component.ts
this.router.navigate(['/details', { data: JSON.stringify(item) }]);
在你的detail.component.ts
let data = this.activatedRoute.snapshot.paramMap.get('data');
this.item = JSON.parse(data);
console.log(this.item);