避免在按钮点击时使用 Angular2 来系统地提交表单。
避免在Angular2中在按钮点击时系统地提交表单
问题原因:在Angular2中,如果没有显式指定按钮的type属性为"button",则默认为"submit"类型,导致按钮点击时会触发表单的自动提交。
解决方法1:显式指定按钮的type属性为"button"
解决方法2:使用$event.preventDefault()阻止默认的表单提交行为
或者
preview(e){ e.preventDefault(); console.log('preview'); }
注意:在这种情况下,如果事件处理程序返回false,则会调用preventDefault()方法。例如,如果要显式调用stopPropagation()方法,则需要在事件处理程序中返回false。
感谢ünter Zöchbauer指出了这个问题!我一开始尝试了return false,但没有起作用:) 可能在绑定表达式中不允许使用return关键字,但最后一个表达式的值会被隐式返回。
使用解决方法2似乎是最好的答案。只需添加type="button"到我的按钮上就解决了问题。
在第二个示例中,方法调用后的逗号似乎是必需的。如果没有它,我会遇到问题,不得不将其保留。
在这种情况下,我需要在这里传递$event:`