You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 5 + Ionic 3中ng-repeat实现问题求助

排查你的Ionic 3 + Angular 5 循环渲染问题

嘿,我一眼就看到问题啦——你把AngularJS(1.x)和Angular(2+,也就是你用的Angular 5)的循环指令搞混了!ng-repeat是AngularJS的老语法,Angular 5根本不认识它,得用Angular专属的*ngFor才行。而且Angular 5还没有内置的对象键值对遍历管道,得用点小技巧来处理。

下面是修正后的完整代码:

第一步:修正manage.html模板

把你原来的<li>上的ng-repeat换成Angular的*ngFor,同时通过方法来获取对象的键:

<ul *ngFor="let room of roomDetail; let i = index">
  <li *ngFor="let key of getObjectKeys(room)">
    {{key}} : {{room[key]}}
  </li>
</ul>

第二步:完善manage.ts逻辑

需要在组件里添加一个辅助方法,用来获取对象的所有键,同时别忘了初始化你的roomDetail数据(不然循环啥也渲染不出来):

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';

@IonicPage()
@Component({
  selector: 'page-manage',
  templateUrl: 'manage.html'
})
export class ManagePage {
  roomDetail: any[];

  constructor(public navCtrl: NavController, public navParams: NavParams) {
    // 这里给roomDetail赋个示例值,你可以换成自己的真实数据
    this.roomDetail = [
      { roomNumber: '101', type: 'Single', price: 150 },
      { roomNumber: '102', type: 'Double', price: 220 }
    ];
  }

  // 辅助方法:获取对象的所有键
  getObjectKeys(obj: any) {
    return Object.keys(obj);
  }
}

为啥要这么改?

  • ng-repeat是AngularJS的旧指令,Angular 5及以后的版本完全不兼容它,必须用*ngFor来实现循环渲染。
  • Angular 5还没有内置的KeyValuePipe(这个管道是Angular 6才加的),所以我们得通过Object.keys()来手动获取对象的键,再通过键来取值。
  • 一定要确保roomDetail数组已经被正确初始化并赋值,如果它是空的或者未定义,*ngFor就不会渲染任何内容哦。

内容的提问来源于stack exchange,提问作者Darshan theerth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:00:01