【问题标题】:Angular 5 Nested *ngFor-Loop with ChunksAngular 5 嵌套 *ngFor-Loop 与块
【发布时间】:2018-02-20 05:25:04
【问题描述】:

我对 Angular 很陌生,并试图将嵌套的 For-Loop 作为块获取。

<div *ngFor="let eventChunks of chunks(events,3);">
      <div *ngFor="let event of eventChunks" class="card-columns">
        <event-item [event]="event"></event-item>
      </div>

在我的组件中,我将函数 chunks() 定义如下:

chunks(array, size) {
        let results = [];
        results = [];
        while (array.length) {
            results.push(array.splice(0, size));
        }
        return results;
    };

最终出现以下错误:

ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'ngForOf: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]'. Current value: 'ngForOf: '.

有谁知道如何正确解决这个问题?我尝试使用 TrackBy 和 index,但找不到有效的解决方案。

非常感谢您的宝贵时间和帮助! :)

【问题讨论】:

  • chunks reuturn 是什么意思?
  • 结果按预期填充。在返回结果之前通过 console.log 我得到一个数组,其中包含我想要的大小的数组...
  • 并且记录返回的块本身是我想要的大小的对象数组......

标签: javascript angular angular5


【解决方案1】:

调用函数来操作数据从来都不是一个好主意 模板端

错误是因为从模板端调用 function 导致 ngFor 和模板重新渲染(并再次导致循环),

在模板端而不是:

<div *ngFor="let eventChunks of chunks(events,3);">

随便用

<div *ngFor="let eventChunks of events">

从组件端

使用构造函数/ngOnInit 放置此代码(或在您的服务中获取数据)

this.events = this.chunks(this.events,3);

WORKING DEMO(更多详情Read

【讨论】:

  • 但实际上我只想操作它来改变它的视图,这样我就可以在它们之间插入其他行。即使在那个地方改变它不是一个好主意?因为除此之外,我认为通常的数组似乎更好......?
  • @Ass ,您也可以通过给定的演示添加其他行,因为我刚刚从组件而不是模板调用函数,您无法通过这种方式实现什么,请您解释一下?
  • 它按预期工作,我也在考虑这个问题。我只是在第一次运行时感到不完全满意,因为我将一个漂亮的直线阵列分成块只是为了显示它......我真的不知道为什么^^
猜你喜欢
  • 2021-12-01
  • 2018-10-13
  • 1970-01-01
  • 2018-03-31
  • 2018-06-11
  • 1970-01-01
  • 2017-09-30
  • 2017-07-01
相关资源
最近更新 更多