我正在尝试将我的应用从Angular 5升级到Angular 6.我按照https://update.angular.io/上的步骤操作 至少我想我做到了。
错误是:
Property 'debounceTime' does not exist on type 'Subject<string>'.
我的组件也丢失了debounceTime导入。我认为ng更新删除了它。
答案 0 :(得分:13)
我在@ Siva636和@Andrew Lobban的帮助下解决了这个问题。
我需要使用管道:
this.field$.pipe(
debounceTime(400),
distinctUntilChanged())
答案 1 :(得分:5)
在reactx文档之后,您还应该订阅可观察的管道:
.pipe(
debounceTime(500),
distinctUntilChanged(),
map((val) => {
...
})
)
.subscribe();
答案 2 :(得分:2)
从Angular 6.1.8开始,只需像下面的示例一样导入和添加管道
import {debounceTime} from 'rxjs/operators';
然后在可观察的订阅方法调用管道(debounceTime(1000))之前的on字段,如下所示:
emailControl.valueChanges.pipe(debounceTime(1000)).subscribe(value => this.setMessage(emailControl));
就是这样,这只是@tiago答案的更新答案-她在其中定义const debouncetime-我们真的不需要使用const和pipe。
答案 3 :(得分:0)
对不起,我很抱歉,但是今天我才遇到这个问题,并已解决。 我这样解决这个问题: 像这样第一次导入:
import {debounceTime} from 'rxjs/operators';
import {pipe} from 'rxjs'
然后创建一个这样的const(我试图直接做而不复制管道,但是没有用,所以我找到了这个解决方案):
const debouncetime = pipe(debounceTime(1000));
然后使用它,然后再进行订阅,例如,我正在做一个带有消息的电子邮件验证程序:
const emailControl = this.registerForm.get('email');
emailControl.valueChanges
.pipe(debouncetime)
.subscribe(value => this.setEmailMessage(emailControl))
不知道它是否是最好的解决方案,但它可以完美运行。 希望对您有所帮助!