我不明白在Angular中如何使用每个事件的构造函数将数据分解为键值对。
这是我的代码:
messageFromSocket: keywordList[] = [];
wsSubscription: Subscription;
status;
constructor(public webSocketService: WebSocketService) {
this.wsSubscription = this.webSocketService.createObservableSocket('ws://localhost:3000')
.subscribe(
messages => this.messageFromSocket.push(
messages
),
err => console.log('err'),
() => console.log('The observable stream is complete')
)
}
这是我的component.ts
减去一些东西。从本质上讲,我现在让它工作的方式是,当一个websocket事件出现时,它会自动推送到这个messageFromSocket
keywordList
数组。
KeywordList
数组实际上是另一个文件中它自己的类,里面有一个构造函数
name: string;
keyword: string;
constructor(name: string, keyword: string) {
this.name = name;
this.keyword = keyword;
}
}
它显示在前端,但作为它自己的大型阵列。
<ng-container class="keywordBox" *ngFor='let message of messageFromSocket'>
<li>
{{ message }}
</li>
</ng-container>
我似乎无法理解如何处理来自websocket的字符串数据,以创建一个名称和关键字的键值对(两者每次都由websocket发送(,然后像许多示例中那样在前端显示。我希望这样,这样我就可以更好地通过应用程序处理数据。
例如,现在它看起来像:
['George: Hello']
or
['George: Hello', 'Raul: World']
我想使用KeywordList
类来分解它们。
此外,如果你知道如何在动态内容的第一个项目中添加填充,你能帮助我吗?因为我觉得我已经尝试了Angular的所有CSS技巧,但我仍然缺少一些东西。
尝试以下更改:
export class KeywordList {
constructor(public name: string, public keyword: string) {}
}
constructor(public webSocketService: WebSocketService) {
this.wsSubscription = this.webSocketService.createObservableSocket('ws://localhost:3000')
.subscribe(
messages => {
messages.forEach(
(message)=> {
const arrayMessage = message.split(':');
const name = arrayMessage[0];
const keyword = arrayMessage[1].trim();
const keywordList: KeywordList = new KeywordList(name,keyword);
this.messageFromSocket.push(keywordList);
}),
err => console.log('err'),
() => console.log('The observable stream is complete')
);
}