我有一个组件,包含模板驱动表单。我真正想做的是添加一个代码routerCanDeactivate
检查表单是否为的方法pristine
如果没有,则在继续导航之前警告用户。我知道 Angular 采用模板驱动形式并构建一个 ControlGroup。在模板中,我可以像这样访问它:<form #hf="ngForm" ...>
有没有办法从组件内部引用它?
如果这是不可能的,是否有另一种方法可以通过routeCanDeactivate 检查表单是否脏?
感谢您的帮助。
准备表格
你需要添加ngControl
到每个控件
<input ngControl="someName" ...>
and ngControlGroup
输入和之间的每个元素<form>
element
<div ngControlGroup="groupName">
让您的表单控件由NgForm
指示。
参考表格
如果您的模板中只有一个表单,您可以使用
@ViewChild(NgForm) formA;
获取对表单的引用,否则将模板变量添加到表单
<form ngForm #formA="ngForm">
并使用获取参考
@ViewChild('formA') formA;
然后你可以检查pristine
状态如
routerCanDeactivate() {
return this.form.pristine;
}
笨蛋的例子 https://plnkr.co/edit/o1c2j9?p=preview
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)