2017-03-14 8 views
0

私は初心者です。ionic2Ng Forループが適切に処理されない

実際には、プッシュ通知にFCMプラグインを使用しています。

これは私が通知ページをクリックすると、それはそれぞれのページ(通知ページ)にリダイレクトもWRKのperfect.andだ私のアプリのcomponent.ts

 FCMPlugin.onNotification(function(d){ 
      if(d.wasTapped){ 
      console.log(d); 
      var nav=self.appCtrl.getActiveNav().setRoot(NotificationsPage); 
     }) 

です。

firebaseコレクションからデータを取得し、配列に代入しました。

配列の変数名はNotificationsです。配列の値をconsoledしました。うまくいきます。

virtualScrollを使用してUIに配列を表示します。私のhtml code.This以下

通知にそれぞれのページ(通知ページ)マイ通知ページのコンポーネント(TSファイル)以下

<ion-card class="card" [virtualScroll]="Notifications"> 
     <ion-item (click)="navigate(Notifications.value.TYPE,Notifications.value.FROM,Notifications.value.$key,Notifications.value.TO,Notifications.value.MSG,Notifications.value.STATUS,Notifications.time)" *virtualItem="let Notification"> 
     <ion-avatar item-left> 
      <img *ngIf="!Notification.userval.FILE" src="https://firebasestorage.googleapis.com/v0/b/apartments-ea9e5.appspot.com/o/default.png?alt=media&token=a64af538-17a7-46e1-9e38-383c1df060cf"> 
      <img *ngIf="Notification.userval.FILE" [src]="Notifications.userval.FILE"> 
     </ion-avatar> 
     <p>{{Notification.value.MSG}}</p> 
     <p>{{Notification.time}}</p> 
     <p style="text-align:right;color:#334bfa;">{{Notifications.value.TYPE}}</p> 
     </ion-item> 
    </ion-card> 

を押しています。

  this.authservice.getalluser().first().subscribe(namelist=> 
       { 
       var users=[]; 
       namelist.forEach(userval=> 
       { 
        users.push(userval.val()); 
       }) 

       for(var i in val) 
       { 
       this.Time=val[i].SEND_TIME; 
       var timeagoIns = timeago(); 
       var result=timeagoIns.format(this.Time); 
       console.log(result); 
       var user=users.filter(users=>users.USER_ID.toString() === val[i].FROM.toString()); 
       this.Notifications.push({ 
        value:val[i], 
        time:result, 
        userval:user[0] 
        }) 
       Console.log(this.Notifications); 
      }) 

配列値はUIを更新しません。通知値を管理します。これは問題ありません。

なぜUIは配列値で更新されません。

この問題を解決する方法。

親切、

おかげで私をアドバイス。

答えて

0

このように配列を更新していますか?

push.on('notification', (data) => { 
    // update array 
}); 

このように配列を更新する場合は、UIを更新しないでください。あなたの配列は現在ngZoneから外れているからです。あなたがこれを使用することができます。この場合、ウルreply.Iについては

push.on('notification', (data) => { 
    this.ngZone.run(() => { 
     // update array 
    }); 
}); 
+0

おかげで、通知をクリックしてfile.Whenアプリのコンポーネントで配列値を更新しますそれぞれのpage.Howにリダイレクト配列value.Iは、任意のpushnotifications値を渡すdoesnot更新する必要がありますarray.Actually私はそれぞれのページ上のfirebaseコレクションからデータを収集しました。なぜ私は配列の値を更新します。 –

+0

質問を編集して配列更新コードを追加してください。 そうでなければ、多くのことを想定して答えを出すことは非常に難しいです。 – Math10

+0

Kindly Pls Check It.Iコードを更新してください。 –

関連する問題