Angular 角度6升级:去BounceTime不是主体的属性

Angular 角度6升级:去BounceTime不是主体的属性,angular,typescript,rxjs,Angular,Typescript,Rxjs,我正在尝试将我的应用程序从Angular 5升级到Angular 6。我沿着楼梯走 至少我认为我做到了 错误是: Property 'debounceTime' does not exist on type 'Subject<string>'. 类型“Subject”上不存在属性“debounceTime”。 此外,我的组件丢失了debounceTime导入。我认为ng更新删除了它 我在@Siva636和@Andrew Lobban的帮助下解决了这个问题 我需要使用管道: t

我正在尝试将我的应用程序从Angular 5升级到Angular 6。我沿着楼梯走 至少我认为我做到了

错误是:

Property 'debounceTime' does not exist on type 'Subject<string>'.
类型“Subject”上不存在属性“debounceTime”。

此外,我的组件丢失了debounceTime导入。我认为ng更新删除了它

我在@Siva636和@Andrew Lobban的帮助下解决了这个问题

我需要使用管道:

  this.field$.pipe(
      debounceTime(400),
      distinctUntilChanged())

在reactivex文档之后,您还应该订阅可观察的管道:

.pipe(
    debounceTime(500),
    distinctUntilChanged(),
    map((val) => {
        ...
    })
)
.subscribe();

很抱歉耽搁了,我今天刚解决了这个问题,就这样解决了。 我是这样解决这个问题的: 第一次导入如下:

import {debounceTime} from 'rxjs/operators';
import {pipe} from 'rxjs'
然后创建一个类似这样的常量(我试图不复制管道而直接执行,但不起作用,所以我找到了这个解决方案):

然后在订阅之前使用它,例如,我正在对邮件进行电子邮件验证:

const emailControl = this.registerForm.get('email');
    emailControl.valueChanges
     .pipe(debouncetime)
     .subscribe(value => this.setEmailMessage(emailControl))
不知道这是否是最好的解决方案,但它工作得很完美。
我希望它能帮助一些人

从Angular 6.1.8开始,只需导入并添加管道,如下例所示


从'rxjs/operators'导入{debounceTime}const emailControl = this.registerForm.get('email');
    emailControl.valueChanges
     .pipe(debouncetime)
     .subscribe(value => this.setEmailMessage(emailControl))