Logan_B
Logan_B

Reputation: 527

Angular 6 upgrade: debounceTime is not property of Subject

I am attempting to upgrade my app from Angular 5 to Angular 6. I followed the steps on the https://update.angular.io/ At least i think i did.

The Error is :

Property 'debounceTime' does not exist on type 'Subject<string>'.

Also my components lost the debounceTime import. I think the ng update removed it.

Upvotes: 15

Views: 17450

Answers (4)

Heena Manglani
Heena Manglani

Reputation: 436

As of Angular 6.1.8, just need to import and add pipe like below example

import {debounceTime} from 'rxjs/operators';

Then on field just before the observable subscribe method call pipe(debounceTime(1000)) like below:

emailControl.valueChanges.pipe(debounceTime(1000)).subscribe(value => this.setMessage(emailControl));

And that's it, it's just a updated answers of @tiago's answer - where she is defining const debouncetime - we don't really need to use const and pipe.

Upvotes: 10

Tiago Neiva
Tiago Neiva

Reputation: 337

i am sorry for the delay but i just get this problem today and fixed like this. i solve this issue like this: first import like this:

import {debounceTime} from 'rxjs/operators';
import {pipe} from 'rxjs'

Then create a const like this (i tried to do directly without duplicating pipe but didn´t work so i found this solution):

const debouncetime = pipe(debounceTime(1000));

And then use it before you subscribe for example i was doing an email validator with messages:

const emailControl = this.registerForm.get('email');
    emailControl.valueChanges
     .pipe(debouncetime)
     .subscribe(value => this.setEmailMessage(emailControl))

dont know if its the best solutions but it works perfectly. I hope it helps some one!

Upvotes: 1

jmuhire
jmuhire

Reputation: 2221

Following the reactivex docs, you should also subscribe to the pipe observable :

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

An Observable is called a “cold” Observable if it does not begin to emit items until an observer has subscribed to it.

Upvotes: 6

Logan_B
Logan_B

Reputation: 527

I solved it with the help of @Siva636 and @Andrew Lobban.

I needed to use pipe:

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

Upvotes: 18

Related Questions