Угловая дорожка не работает для ngFor при передаче значения из ng for в компонент
Я пытаюсь использовать trackby в ngFor, но он не работает ниже мой код..
<app-feeddetails *ngFor="let feedData of timeLineFeed;trackBy:trackByFeedId " [feedData]="feedData" ></app-feeddetails>
trackByFeedId(index:number , feedData:any): string {
return feedData.feedkey;
}
Вся логика для создания timeLineFeed, я использую Firebase в качестве базы данных, чтобы вывести данные и отображать в ngFor после создания массива. На самом деле проблема в том, что он перезагружает все представление ngFor, а не просто изменяет новый индекс. Так что обновление всей страницы кажется таким...
this.lastestfeed
.getUserTimeline( this.auth.userid ,this.batch+1, this.lastKey)
.do(actions => {
console.log("Scrolled",actions);
/// set the lastKey in preparation for next query
this.lastKey = _.first(actions)['feedid']
console.log("Scrolled last key", this.lastKey);
const newFeed = actions.length == 1 ? actions : actions.slice(1);
console.log("Scrolled new Feed " ,newFeed);
/// Get current actions in BehaviorSubject
const currentFeed = this.timeline.getValue()
/// If data is identical, stop making queries
if (this.lastKey == _.first(newFeed)['feedid']) {
this.finished = true
}
/// Concatenate new movies to current movies
this.timeline.next( _.concat(newFeed, currentFeed) );
const timelineData = this.timeline.getValue();
console.log("scrolled after last key",timelineData);
for(var i = (timelineData.length -1) ; i >= 0 ; i-- ){
// timelineData.forEach(action =>{
let feedKey = timelineData[i].feedid;
self.timeLineFeed.length = 0;
this.db.database.ref(`xxxxxxxx/feedmaster/${feedKey}`).once("value")
.then(function(snapshot){
if(snapshot){
console.log("snapshot",snapshot.val());
let feedkey = snapshot.key;
let feedData = snapshot.val();
let textfeed = feedData.text;
let posted_by = feedData.posted_by;
let createdat = feedData.createdat;
let updatedat = feedData.updatedat;
let posttype = feedData.content_type;
let attachmenturl = feedData.attachment_url;
let attachment_extension = feedData.attachment_extension;
self.db.object<User>(`xxxxxxx/users/${feedData.posted_by}/meta`).valueChanges()
.subscribe( actions => {
// console.log(actions.name);
if(actions.name != undefined && actions.name !="")
{
self.timeLineFeed.push({ feedkey:feedkey ,name:actions.name , picturUrl:actions.pictureURL, posttype:posttype,
text:textfeed,posted_by:posted_by ,createdat : createdat , updatedat: updatedat , attachmenturl:attachmenturl , attachment_extension:attachment_extension })
//self.timeLineFeed.reverse();
}
} )
}
});
// })
}
})
.take(1)
.subscribe()