Angular 如何检查此数据中是否存在用户名?
我们正在尝试向在线用户展示。并检查用户是否在线,然后在HTML中显示p标记。关键是在下面的代码中,它在console.log中显示了所有在线用户Angular 如何检查此数据中是否存在用户名?,angular,typescript,angular6,Angular,Typescript,Angular6,我们正在尝试向在线用户展示。并检查用户是否在线,然后在HTML中显示p标记。关键是在下面的代码中,它在console.log中显示了所有在线用户 public isOnline: boolean = false; ... ... ngOnInit() { this.socket.emit('online', { room: 'global', user: this.user.username }); this.socket.on('refreshPage'
public isOnline: boolean = false;
...
...
ngOnInit() {
this.socket.emit('online', { room: 'global', user: this.user.username });
this.socket.on('refreshPage', () => {
this.GetUserData(this.name);
});
...
...
ngAfterViewInit() {
this.socket.on('usersOnline', data => {
console.log(data);
});
}
现在,上面的console.log在控制台中显示联机用户列表。
我们如何检查特定用户是否在线?
通过以下方式替换console.log:
this.isOnline = /* [write a logic check this.user.username exist in data ] */
<p class="" *ngIf="isOnline">online</p>
然后为每个用户添加p标记,如下所示:
this.isOnline = /* [write a logic check this.user.username exist in data ] */
<p class="" *ngIf="isOnline">online</p>
在线
如何修复此代码?您可以使用array.some,其条件将返回布尔值true/false
this.isOnline = data.some(d=>d.username == user.username);
此代码可能对您有用:
var data= ['Javid', 'David', 'Alex', 'john'];
const name= "Javid"
function search(data){
return data.filter(item=>name=== item).length ? true: false;
}
console.log(search(data));
它不起作用了
联机
不会为该用户显示。当我在上面更改此.user.name时,它会显示为联机,但对于所有用户,即使是那些脱机的用户,也会显示为联机。如果我们使用类似的内容:CheckIfOnline(name){const result=.\indexOf(this.onlineusers,name);if(result>-1){return true;}其他{return false;}}它如何与ngAfterViewInit的数据通信?我不明白你的问题。你能看到这个.isOnline打印什么吗?当有console.log(数据)时,它在控制台中打印在线用户的名字。当我将它替换为:this.isOnline=data.some(d=>d.name==user.name);如果在上面的html p标记中显示脱机配置文件上的p标记,则添加ng。因此,这意味着您建议的此功能不进行过滤。请添加一些文字,解释为什么您的代码可能有用,以改进您的答案。