2016-05-26 17 views
0

derzeit arbeite ich mit angular 2 mit sails.js und ich habe ein Problem mit asynchrome Ereignis. Ich habe versucht, Versprechen zu verwenden, aber die Ansicht ändert sich nicht, wenn das Post-Array aktualisiert werden, hat jemand eine Idee?Angular 2 io.socket.on

danke für Ihre Antworten.

Antwort

1

Ich denke, Socket läuft außerhalb Angulars Zone und daher erkennt Angular Callbacks nicht und führt keine Change Detection. Führen Sie den Code, der das Modell innerhalb Angulars Zone explizit aktualisiert:

@Injectable() 
export class newsService { 
    posts = []; 
    constructor(private zone:NgZone) { 
     console.log('newsService constructor'); 
     io.socket.on('post',event => { 
      this.zone.run(() => { 
      let data = event.data; 
      switch(event.verb) { 
       case 'created': 
        let post = new Post(); 
        post.id = data.id; 
        post.content = data.content; 
        post.author = data.author.fullname; 
        post.date = new Date(data.date); 
        this.posts.push(post); 
        break; 
      } 
      }); 
     }); 
    } 
} 
+0

es funktioniert! Danke !!!! : D – Unchained

+0

Freut mich zu hören :) –