アプリをAngular 5からAngular 6.にアップグレードしようとしています。 https://update.angular。 io / 少なくとも私はやったと思う。
エラーは次のとおりです。
Property 'debounceTime' does not exist on type 'Subject<string>'.
また、私のコンポーネントはdebounceTimeインポートを失いました。 ngアップデートで削除されたと思います。
@ Siva636と@Andrew Lobbanの助けを借りて解決しました。
パイプを使用する必要がありました:
this.field$.pipe(
debounceTime(400),
distinctUntilChanged())
Angular 6.1.8の場合、以下の例のようにパイプをインポートして追加するだけです
_import {debounceTime} from 'rxjs/operators';
_
次に、監視可能なサブスクライブメソッドの直前のフィールドで、次のようにpipe(debounceTime(1000))を呼び出します。
emailControl.valueChanges.pipe(debounceTime(1000)).subscribe(value => this.setMessage(emailControl));
そしてそれだけです、それは@tiagoの答えの更新された答えです-彼女がconst debouncetimeを定義しているところで-私たちは実際にconstとpipeを使う必要はありません。
Reactivexのドキュメントに従って、observableパイプにもサブスクライブする必要があります。
.pipe(
debounceTime(500),
distinctUntilChanged(),
map((val) => {
...
})
)
.subscribe();
オブザーバがサブスクライブするまでアイテムの放出を開始しない場合、オブザーバブルは「コールド」オブザーバブルと呼ばれます。
遅れて申し訳ありませんが、今日この問題が発生し、このように修正しました。この問題を次のように解決します。最初のインポートは次のようになります。
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))
その最善の解決策かどうかはわかりませんが、完全に機能します。私はそれが何かを助けることを願っています!