问题背景:当使用 Angular 中的需要多次加载表单的组件时,如搜索框组件,会发现每次加载组件都会导致表单无法正常工作。
解决方法如下:
在组件中,将搜索表单包装在一个 div 中,并为其添加一个唯一的 ID。
在组件的 ngOnChanges 生命周期钩子中监听表单的变化,并根据变化重新初始化表单。
示例代码如下:
@Component({
selector: 'search-form',
template:
,
})
export class SearchFormComponent implements OnChanges {
@Input() searchData: any;
ngOnChanges(changes: SimpleChanges) { if (changes.searchData) { this.initForm(); } }
private initForm() { const form = document.querySelector('#searchForm form'); // Initialize the form here } }
通过这样的方式,可以确保每次组件加载时,都有一个唯一的表单 ID,以避免表单多次加载时的冲突问题。