0

Я знаю, что есть тонна информации об обнаружении изменений в Angular 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 to trigger change detection. Или чуть ниже вашего нажатия добавьте this.bucket = this.bucket.concat ([]) –

+0

попробовал this.buckets = this.buckets.concat ([bucket]); и наоборот. Он выполняется правильно, но все же задерживается на несколько секунд перед рендерингом. : -/ – jaruesink

+0

, так что я думаю, что это не проблема изменчивости. – jaruesink

ответ