Angular2入门系列(四)——ngModel与表单元素名称属性通过NgModel实现双向绑定在开发数据录入表单时,我们往往希望显示数据的属性值,并在用户更改时更新数据的属性值。NgModel指令可以帮助我们实现这个需求:如果我们更喜欢前缀格式,我们也可以这样写:>这个结构背后还有一层意思,就是基于我们之前学过的属性绑定和事件绑定技术。我们可以通过分别绑定input元素和input事件的value属性来实现和NgModel一样的效果:>这种写法很繁琐。我们不仅要记住需要设置的元素属性,还要记住反映用户操作的事件。以及如何提取当前输入框中的文本值,以便更新数据属性。有人愿意每次都做这些工作吗?NgModel指令隐藏了这些繁琐的细节。它包装了元素的value属性,监听输入事件,当文本框发生变化时触发事件。[(ngModel)]是否满足我们所有的需求?有没有这样的需求,我们需要使用扩展写法呢?NgModel只能设置目标属性。如果当用户更改输入值时我们需要做一些不同的事情,或者更多的事情怎么办?我们来尝试实现这样一个要求,强制用户的输入为大写字母:注意事项1.在ng2形式下使用ngModel时,需要注意。它必须有一个name属性或者使用[ngModelOptions]="{standalone:true}",两者任选其一
如果名称或未设置ngModelOptions,会报如下错误:如果在form标签内使用ngModel,要么必须设置name属性,要么必须在ngModelOptions中将formcontrol定义为'standalone'。因为ngForm持有那些通过ngModel指令和名称属性为单个元素创建的控件,并监视它们的属性变化,包括有效性。它还有自己的valid属性,只有在它里面的所有控件都有效的时候才有效。2、使用按钮时,需要注明type类型。未指明类型的按钮将默认为提交。当你点击一个非提交表单的按钮时,表单也会被提交,所以必须注明type="button"