2016-08-05 3 views
0

Я играю с приложением Angular2, которое извлекает сообщения чата из службы. При уведомлении Pusher приложение повторно извлекает все сообщения из службы. Это хорошо работает во всех браузерах, кроме IE. Функция push-notfication работает нормально, и приложение регистрирует, что все сообщения также правильно загружены в IE, но похоже, что браузер не повторно отображает обновленный контент. (IE 11). Любые предложения, почему этого не происходит? ОтрывокСтраница Angular2 обновлена, но не в IE

Компонент:

ngOnInit(){ 
     this.getMessages(); 
     this.pusher = new Pusher('PUSHER_KEY'); 
     this.channel = this.pusher.subscribe('test_channel'); 
     this.channel.bind('my_event', (data) =>{ 
         this.getMessages(); 
      }); 
     console.log('In OnInit'); 
    } 

    sendMessage(message:string): void{ 
     this._service.postMessage(this.id, message); 
     console.log('Send Message called'); 
    } 

    getMessages():void{ 
     this._service.getMessages(this.id) 
      .subscribe(
       messages => this.messages = messages, 
       error => this.errorMessage = <any>error); 
    } 

шаблона:

<div class="panel-body"> 
     <div class="row"> 
      <div class="col-md-2">Add Message: </div> 
      <div class="col-md-2"><input type="text" [(ngModel)]='newMessage' /> <button class="btn btn-primary" (click)='sendMessage(newMessage)'>Send</button></div> 
     </div> 
     <div class="table-responsive"> 
      <table class="table" *ngIf='messages && messages.length'> 
       <thead> 
        <tr> 
         <th>Messages</th> 
        </tr> 
       </thead> 
       <tbody> 
        <tr *ngFor='#message of messages'> 
         <td>{{message}}</td> 
        </tr> 
       </tbody> 
      </table> 
     </div> 
</div> 

ответ

0

Не уверен, если это поможет, но ИМХО стоит попробовать

constructor(private zone:NgZone) {} 

ngOnInit(){ 
    this.getMessages(); 
    this.pusher = new Pusher('PUSHER_KEY'); 
    this.channel = this.pusher.subscribe('test_channel'); 
    this.channel.bind('my_event', (data) =>{ 
     this.zone.run(() => this.getMessages()); 
    }); 
    console.log('In OnInit'); 
} 
+0

, к сожалению, с помощью this.zone не делал никаких чудес к поведению IE. – kenander

+0

Я предполагаю, что для воспроизведения требуется Plunker. –