Javascript 阵列反转*会导致闪烁

Javascript 阵列反转*会导致闪烁,javascript,angular,cordova,ionic-framework,ionic2,Javascript,Angular,Cordova,Ionic Framework,Ionic2,我偶然发现了一个非常奇怪的问题。我正在构建一个带有Angular的Ionic应用程序,我有一个ngFor,上面有一个reverse,奇怪的是,如果我在我的设备上运行它,它会工作得非常好,但只要我添加--prod变量以在生产状态下运行它,reverse就会引起剧烈的闪烁。本质上,它在反转状态和每秒未反转状态之间变化。。。它在不生产的时候工作得很好 这是一张gif: 19小时是我想先展示的,15天是我想最后展示的 以下是我从firebase获取的代码: goToNew() { this.zon

我偶然发现了一个非常奇怪的问题。我正在构建一个带有Angular的Ionic应用程序,我有一个
ngFor
,上面有一个
reverse
,奇怪的是,如果我在我的设备上运行它,它会工作得非常好,但只要我添加
--prod
变量以在生产状态下运行它,
reverse
就会引起剧烈的闪烁。本质上,它在
反转
状态和每秒未反转状态之间变化。。。它在不生产的时候工作得很好

这是一张gif:

19小时是我想先展示的,15天是我想最后展示的

以下是我从firebase获取的代码:

goToNew() {
  this.zone = new NgZone({});
  this.postFeed = new Array();
  this.feedCounter = new Array();

  this.database.database.ref('/posts/'+this.locationId)
  .orderByChild('created')
  .limitToLast(10)
  .once('value', (snapshot) => {
    snapshot.forEach(child => {
        this.feedCounter.push(child.val());
        this.postFeed.push(child.val());

        return false;
    });
  });
}
这是我的HTML:

<ng-container *ngFor="let post of postFeed.reverse; let i = index">
  <div *ngIf="i > 0 && i % 10 == 0" class="pageIndicator">
    <div class="seperator"></div>
    <div class="pageNumb">Page {{i / 10 + 1}}</div>
    <div class="seperator"></div>
  </div>
  <post [postData]="post"></post>
</ng-container>

第{i/10+1}页

我也在
goToNow()
函数中尝试了
this.postFeed.reverse()
,但它的作用完全相同。我还尝试了
this.postFeed.unshift()
而不是
push
,但根本不起作用

正如我所说,当我以以下方式运行我的应用程序时,这将100%起作用:

爱奥尼亚cordova运行安卓设备

但一旦我这么做了:

爱奥尼亚cordova运行安卓--设备--产品

它疯了。删除
reverse
是可行的,但这不是我想要显示数组的方式


我做错了什么?这是离子型/角型/其他类型的bug吗?我不知道为什么这不适用于
--prod

它似乎是由
postFeed.reverse()
引起的,后者改变自身并返回自身

也就是说

var tmp = [1,2,3]
var tmp2 = tmp.reverse()
console.log(tmp) // [3,2,1]
console.log(tmp2) // [3,2,1]
console.log(tmp===tmp2) // true
上面代码中的最后一条语句表示
tmp.reverse()
不返回新数组,而是返回本身

因此,在您的.html代码中,
postFeed.reverse()
返回反转自身。随着更改的发生,
postFeed.reverse()
将重复执行。然后,视图也会因为内容的改变而改变。因此,视图必须闪烁

您应该使用这种代码(例如,它不是有效的)
postFeed.concat()?