Я создал API с Laravel, мой контроллер звонит в твиттер и инстаграм, чтобы получать мои последние сообщения. Это относительно медленно, занимает около 2 секунд для завершения и обратной связи на странице. Я использую кладку jQuery для отображения этих элементы, использующие angulars ngFor - это все здорово, однако у меня есть каменная кладка, инициализированная при загрузке страницы, и в то время она должна ждать, пока сообщения будут загружены, в настоящее время я использую функцию тайм-аута, которая работает, но она не такая элегантная или надежная, есть ли способ, которым я могу отслеживать, когда ngFor закончил загрузку результатов, а затем одновременно инициализировать плагин masonry
сервис
public getSocialMedia() {
this._http.get(this.apiUrl).map(response => response.json()).subscribe(data => {
// console.log( data.socialwall );
this._dataStore.socialwall = data.socialwall;
//console.log(this._SocialObserver);
this._SocialObserver.next(this._dataStore.socialwall);
}, error => console.log('Could not load socialwall.'));
}
компонент
ngOnInit() {
var container = jQuery('#masonry');
setTimeout(function() {
container.masonry({
columnWidth: 5,
itemSelector: '.grid-item',
isFitWidth: true,
isAnimated: true,
gutter: 15,
animationOptions: {
duration: 300,
queue: false
}
})
console.log('sdf');
}, 5000);
шаблон
<ul class="list-reset social-wall-container" id="masonry">
<li *ngFor="#social of socialwall | async" [outerHTML]="social.tile_content" (complete)="onCompletingTodo()"></li>
</ul>