我的子组件中包含以下代码:
@Input() query: string;
ngOnChanges(changes) {
if (changes['query']) {
console.log('query is now: ', this.query);
}
}
<input type="text" [(ngModel)]="query">
然后在我的父组件中,我有以下内容: 1.模板
<my-input
(onSearch)="searchSelected($event)"
[searchTerm]="selectedSearch">
</my-input>
<span>search is: {{selectedSearch}}</span>
我的问题是,每当我输入输入组件时,它就永远不会更新父级中的selectedSearch。另外,当我在父组件中设置selectedSearch时,它不会在子组件上更新(ngOnChanges也不会触发)。我在做什么错了?
答案 0 :(得分:1)
您的子组件期望输入query
。您在使用时会给它一个seachTerm
道具。
您需要将输入名称更改为
@Input() searchTerm: string;
或修改使用组件的方式以使用正确的输入
<my-input [query]="selectedSearch"></my-input>
现在到输出。您实际上需要在子组件上创建输出
@Output() onSearch = new EventEmitter<string>();
然后在您希望触发EventEmitter
道具时调用onSearch
this.onSearch.emit(my_value)
您可以在此处找到有关该主题的更多文档:
答案 1 :(得分:0)
您可以使用get / set
private _query
@Input()
get query(): string {
return this._query;
}
set query(value: string) {
this._query= value;
// do some logic on set
}