Ich versuche, Chat-Anwendung mit angular2 + socket.io zu implementieren, ich bin in der Lage, Nachricht vom Server zurück zu bekommen, aber sobald ich Nachricht zurück, wie man DOM aktualisieren. Ich habe this.messages.push(message)
getan, aber dies hat keine Auswirkungen.Wie aktualisiert man DOM, wenn man Socket-Nachrichten in angular2 empfängt?
Das, was ich
Home.ts
tunimport {Component} from 'angular2/core';
import * as io from 'socket.io-client';
import * as _ from 'lodash';
const socket = io.connect();
const template: string = require("./home.html");
const style: string = require("./home.scss");
@Component({
selector: 'home',
template: template,
styles: [style]
})
export class Home {
private _user: any;
private messages: any;
private draftMessage: any;
constructor() {
this.messages = {};
socket.on("on:send-message", (data) => {
this.messages.push(data);
console.log("message :", data);
});
socket.on("on:joined-room", (data) => {
console.log("joined");
});
}
get user() : any {
return this._user;
}
onEnter(event: any): void {
event.preventDefault();
socket.emit("on:send-message", this.draftMessage);
}
}
Dies ist meine ausdrückliche Route
socket.on("on:send-message", (data) => {
socket.emit("on:send-message", data);
});
Home.html
<div class="panel-body msg-container-base">
<ol class="chat">
<li class="self" *ngFor="let row of messages">
<div class="avatar"><img src="/avatar.png"/></div>
<div class="msg">
<p>{{row}}</p>
<time>20:18</time>
</div>
</li>
</ol>
</div>
So implementieren Sie ChangeDetectorRef oder Erkennungsstrategie in angular2.
Vielen Dank.
Wie zeigen Sie Ihre Daten in der Komponentenvorlage an? –
Ich habe erwähnt, wie ich die Liste der Nachrichten @Thierry rendern –