@9karamba

DebounceTime не является функцией — хотя я импортирую, почему тогда возникает эта ошибка?

import {Component} from '@angular/core';
import {FormControl} from '@angular/forms';
import {Product, ProductService} from '../../services/product-service';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/map';

@Component({
  selector: 'auction-home-page',
  styleUrls: ['./home.css'],
  template: `
    <div class="row carousel-holder">
      <div class="col-md-12">
        <auction-carousel></auction-carousel>
      </div>
    </div>
    <div class="row">
      <div class="col-md-12">
        <div class="form-group">
          <input placeholder="Filter products by title"
                 class="form-control" type="text"
                 [formControl]="titleFilter">
        </div>
      </div>
    </div>
    <div class="row">
      <div *ngFor="let product of products | filter:'title':filterCriteria" class="col-sm-4 col-lg-4 col-md-4">
        <auction-product-item [product]="product"></auction-product-item>
      </div>
    </div>
  `
})
export default class HomeComponent {
  products: Product[] = [];
  titleFilter: FormControl = new FormControl();
  filterCriteria: string;

  constructor(private productService: ProductService) {
    this.products = this.productService.getProducts();
    this.titleFilter.valueChanges
      .debounceTime(100)
      .subscribe(
        value => this.filterCriteria = value,
        error => console.error(error));
  }
}


Ошибка:
Uncaught (in promise): TypeError: this.titleFilter.valueChanges.debounceTime is not a function
TypeError: this.titleFilter.valueChanges.debounceTime is not a function
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
используйте
import { debounceTime } from 'rxjs/operators';
//.....
.pipe(
  debounceTime(100)
)
//.....

не надо применять устаревший формат, даже с помощью rxjs-compat, она призвана поддерживать старый код, а не писать с помощью нее новый.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
EreminD
@EreminD
Кое-что умею
Была такая же история
помогло добавление строки в раздел импортов
///<reference path="../../../../../node_modules/rxjs/operator/debounceTime.d.ts"/>

Как это работает - хз. Возможно, вам придется подредактировать путь до файла
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы