角2のアプリケーションでは、ユーザーが300msの入力をやめたときに3つの子要素に値を送るHTML検索入力があります。どの入力が含まれています。私はインターネット上でいくつかの記事を読んでおり、そのすべてにはSubject
,debounceTime
、distinctUntilChanged
の演算子が使用されています。子要素への検索入力値を角2で出力する
親コンポーネント:
// Subject to emit an observable
public searchUpdated: Subject <string> = new Subject<string>();
@Output() searchChangeEmitter: EventEmitter <any> = new EventEmitter <any>();
constructor() {
[.......]
this.searchChangeEmitter = <any>this.searchUpdated.asObservable()
.debounceTime(300)
.distinctUntilChanged(); // accept only relevant chars
}
onSearchType(value : string) {
this.searchUpdated.next(value); // Emit the changed value to the subscribers
}
親テンプレート:
<input class="input-group-field" type="search" id="inputSearch" name="inputSearch" (keyup)="onSearchType($event.target.value)">
私が放出された値を渡したいチュートリアルの1に続いて、私は次のコードになってしまいました子供のコンポーネントが、私は少し失われて感じている。私はこれを試してみたが、それはうまくいきませんでした:
親テンプレート
<app-object-tree [searchFilter]="searchChangeEmitter"></app-object-tree>
(そして、子コンポーネントのアプリ・オブジェクト・ツリー」で、@Input「searchFilter」を作成し、それを購読して値を取得しようとしています)
サービスを作成して親コンポーネントで提供し、それを子コンポーネントでサブスクライブするのは、私にとっては意味がありますが、 'debounceTime'と 'distinctUntilChanged'操作を適用した後のサービス 'セッター'機能
ありがとう、私は自分自身を正しく説明していないと申し訳ありませんが、私はまだSubject/Observableのすべての概念を結びつけようとしています。
この場合、EventEmitterは必要ありません。私はあなたのソリューションを実装し、それは完全に動作します。子コンポーネントでは、@ Inputプロパティセッターを作成しました。ユーザーが検索タームを入力するたびに、子に渡されます。ありがとう! – Fel