Я знаю, что есть тонна информации об обнаружении изменений в 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);
});
}
}
Наверное, попробуйте использовать concat вместо push to trigger change detection. Или чуть ниже вашего нажатия добавьте this.bucket = this.bucket.concat ([]) –
попробовал this.buckets = this.buckets.concat ([bucket]); и наоборот. Он выполняется правильно, но все же задерживается на несколько секунд перед рендерингом. : -/ – jaruesink
, так что я думаю, что это не проблема изменчивости. – jaruesink