我正尝试使用ngOnChanges创建一个搜索过滤器,因为用户在输入中键入字母。这里是我的代码:分量模板使用@Input装饰器触发Angular 2中的ngOnChanges生命周期钩子
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>
但随后就在这里绑定SEARCHTEXT我的控制器?
我不断收到错误是“不能绑定到‘搜索’,因为它不是一个专有财产‘输入’。
我有这样的@input装饰了照顾的理解那,但显然我缺少的东西在这里
注:我并添加使用(ngModelChange)和绑定到[(ngModel)]在我controller..works精值过滤器,但它听起来像使用ngOnChanges。是做这件事的最好方法,所以我想了解如何使它工作。谢谢
OK对于输入元素属性有意义。因此,如果我将它添加到组件元素中,那么可以自动在我的模板中为查找任何输入元素,并通过ngOnChanges获取更改?这不是更新,所以我仍然错过了一些东西。或者,如何在我的模板中的输入元素上进行更改?我怎样才能绑定到输入的文本值,因为用户输入到它..i.e。我怎么能两种方式绑定到我的控制器内的虚拟文本 - [(搜索)] ='dummyText',和控制器:“this.dummyText”..是否正确?谢谢 –
bschmitty
如果你想要2路数据绑定,那么在你的'SearchComponent'模板中,做这个'',所以如果用户输入一些文本,'input.value'改变,它会更新你的'search'属性,如果你的'search'属性改变了,那么文本输入框也会显示新值,这是2路数据流为你。请注意,为了使用角度形式,每个元素必须在其上设置“名称”属性 – Dummy