Угловая дорожка не работает для 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()

0 ответов

Другие вопросы по тегам