Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 8 Websocket用户使用rxjs键入事件_Angular_Typescript_Websocket_Chat_Rxjs6 - Fatal编程技术网

Angular 8 Websocket用户使用rxjs键入事件

Angular 8 Websocket用户使用rxjs键入事件,angular,typescript,websocket,chat,rxjs6,Angular,Typescript,Websocket,Chat,Rxjs6,我正在通过.Net后端上的Websocket在Angular 8中构建一个聊天应用程序。我需要一些帮助,试图获得“用户键入…”事件从角度到套接字。我的socket服务器需要在用户开始键入和停止键入时接收数据,并将其传递给收件人。我有一个基本的反应式表单,带有一个输入控件,它给了我valueChanges事件。我已经尝试了许多可能的RxJS操作符组合来实现这一点,但无法实现。请帮忙 我得到的最接近的是下面 this.newMessageForm.get('message').valueChange

我正在通过.Net后端上的Websocket在Angular 8中构建一个聊天应用程序。我需要一些帮助,试图获得“用户键入…”事件从角度到套接字。我的socket服务器需要在用户开始键入和停止键入时接收数据,并将其传递给收件人。我有一个基本的反应式表单,带有一个输入控件,它给了我valueChanges事件。我已经尝试了许多可能的RxJS操作符组合来实现这一点,但无法实现。请帮忙

我得到的最接近的是下面

this.newMessageForm.get('message').valueChanges
  .pipe(
    first(),
    tap(value => console.log('User is typing...')),
    debounceTime(1000)
  )
  .subscribe(value => {
    console.log('User has stopped typing');
  });
上面通过给我流的第一个值来给我开始键入事件,但是如果用户停止并再次开始键入,它不会重置。我是Rxjs的新手。请帮忙


谢谢

也许你的想法太复杂了

因此,我尝试了一些更简单的辅助函数:


// ......
私有IsTyping:boolean;//私有变量
// ......
this.newMessageForm.get('message').valueChanges
.烟斗(
点击(value=>this.checkTyping(true)),
去BounceTime(1000))
.subscribe(值=>{
此项。检查键入(错误);
});
// ......
检查类型(isTyping:布尔型){
if(isTyping!==此.isTyping){
this.IsTyping=IsTyping;
如果(正在键入){
log(“用户正在键入…”);
}否则{
log(“用户已停止键入”);
}
}
}

哇,你是对的。我想得太多了。这就搞定了…非常感谢你。。。。