ユーザーが入力に文字を入力するときにngOnChangesを使用して検索フィルタを作成しようとしています。ここに私のコードは次のとおりです。@Input Decoratorを使用してngOnChangesライフサイクルフックを角度2でトリガーする
export class SearchComponent implements OnInit, OnChanges {
@Input() search:string
// trying to get this to run each time the input value changes
public ngOnChanges(changes: any) {
console.log(changes.search);
}
}
@NgModule({
imports: [MaterialModule, FlexLayoutModule, BrowserModule, FormsModule]
// declarations, providers, exports also defined here
})
コンポーネントテンプレート内の入力要素:
// using Material Design Library
<input mdInput [search]="searchText" type="text" placeholder="Search"></input>
または私はこれだけのよう@Inputを使用することができます。
<search-component [search]="searchText"></searchComponent>
しかし、その後、検索テキストがバインドここではありません私のコントローラーに?
私は入れませんエラーが入力 『『それはの既知のプロパティではありませんので、』検索「にバインドできません』 です。
私は@Inputデコレータは、の世話をしたことを理解していましたそれが、明らかに私はここで何かが足りないのです
注:私は(ngModelChange)を使用してフィルタを追加しましたし、細かい私のcontroller..worksで[(ngModel)]の値に結合する。しかし、それはngOnChangesを使用してのように聞こえます。私はそれを動作させる方法を理解しようとしているので、これを行うための最良の方法です。ありがとう
OKは入力要素のプロパティに意味があります。したがって、これをコンポーネント要素に追加すると、用のテンプレート内の入力要素が自動的に検索され、ngOnChangesによって変更が取得されます。私はまだ何かが欠けているので、それは更新ではありません。または、テンプレートの入力要素の変更をどのように取得するのですか?そして、ユーザーが入力すると、入力上のテキスト値にどのようにバインドできますか。どのように私のコントローラ内のダミーのテキストにバインドする2つの方法 - [(検索)] = 'dummyText'、コントローラ: "this.dummyText" ..正しいですか?ありがとう –
bschmitty
2方向データバインディングを 'SearchComponent'テンプレートに入れたいのであれば、これを行います。 'であるので、ユーザが何らかのテキストを入力すると、' input.value'が変更され、 'search'プロパティが更新され、' search'プロパティが変更された場合、テキスト入力ボックスは新しい値を表示します。あなたのためのデータフロー。角度フォームを使用するには、各要素に 'name'属性を設定する必要があることに注意してください。 – Dummy