0

我知道有很多关于角度2变化检测的信息,我一直在尽我所能把头围绕在它周围。我认为我的问题可能与Array的可变性有关,但我不确定。所以我们从Firebase进入这些“桶”,并将它们推送到一个数组中,然后传递给子组件。这一切都可以正常工作,并且数组的填充速度相当快,但它需要几秒钟的时间才能在页面上呈现。 (但是,当我尝试添加一些setIntervals和setTimeouts时,它的运行速度要快得多,但我宁可不要这样做,除非有这样一个干净的解决方案。)有谁明白幕后发生的事情足够好向我简单解释并帮助我?谢谢!角度2变化检测延迟几秒钟,阵列和@输入

import { Component } from '@angular/core'; 
import { BucketService } from '../../services'; 

@Component({ 
    selector: 'home-page', 
    template: ` 
    <header [title]="'Buckets'"></header> 
    <bucketlist [buckets]="buckets"></bucketlist> 
    `, 
    styleUrls: ['./home.page.scss'] 
}) 
export class HomePage { 
    buckets: Array<any> = []; 
    constructor(public bks: BucketService) { 
    bks.subscribe(bucket => { 
     console.log('bucket pushed: ', bucket); 
     this.buckets.push(bucket); 
    }); 
    } 
} 
+0

可能尝试使用concat而不是push来触发更改检测。或者就在你的推动下方添加this.bucket = this.bucket.concat([]) –

+0

试过this.buckets = this.buckets.concat([bucket]);另一种方式。它可以正确安装,但在渲染前仍会延迟数秒。 : -/ – jaruesink

+0

所以我想这不是可变性问题 – jaruesink

回答