当前位置: 首页 > 知识库问答 >
问题:

#form=“ngform”和[ngFormModel]=“form”之间的区别?

乐正浩博
2023-03-14

两者有何不同:

<form #form="ngForm">

<form [ngFormModel]="form">

你什么时候用一个代替另一个?

共有1个答案

刘松
2023-03-14

第一种策略是“模板驱动”表单:Angular将向表单添加一个隐式html" target="_blank">指令,然后在模板中以声明方式添加验证器,因此命名为“模板驱动”。例如,这是如何添加一个验证器,说明该字段是必需的:

<form #form="ngForm">
    <input name="firstName" required [(ngModel)]="formModel">
</form>

这里我们使用了required属性,Angular通过一个隐式指令配置了required验证器。这种类型的表单非常适合与ng-model一起使用,并且非常适合将Angular 1表单迁移到Angular 2。

第二个策略是“模型驱动”的形式。这里我们不在模板上声明验证器,而是声明控件名称:

<form [formGroup]="form">
    <input name="firstName" formControlName="firstName">
</form>
@Component({
    selector: "some-component",
    templateUrl: 'model-driven-form.html'
})
export class ModelDrivenForm {
    form: FormGroup;
    firstName = new FormControl ("", Validators.required);
    constructor(fb: FormBuilder) {
        this.form = fb.group({
            "firstName":["", Validators.required]
        });
        this.form.valueChanges
        .subscribe((formValue) => {
            console.log(formValue);
        });
    }
}
  • 如果迁移现有表单,请考虑NgModel+选项1
  • 如果构建新窗体并想尝试函数式反应编程技术,请考虑formgroup选项2
  • 如前所述,NgModel也适用于选项2。因此,您可以结合通过代码定义验证器和通过NGModel获得表单值。您不必在formgroup中使用函数式反应编程技术,尽管一定要尝试一下,它非常强大的

附言。在这里查看更多关于Angular2中新窗体的信息

 类似资料:
  • 本文向大家介绍jquery中$(#form :input)与$(#form input)的区别,包括了jquery中$(#form :input)与$(#form input)的区别的使用技巧和注意事项,需要的朋友参考一下 $("form :input") 返回form中的所有表单对象,包括textarea、select、button等 $("form input")返回form中的所有input

  • 本文向大家介绍说说form-data、x-www-form-urlencoded、raw、binary的区别是什么?相关面试题,主要包含被问及说说form-data、x-www-form-urlencoded、raw、binary的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 同 发送请求的方式 异 1.multipart/form-data 其请求内容格式为Content-Type:

  • 1.7.0 新增 从 1.8.0 开始支持blur 时才触发校验以及 debounce,同 Validator 一样也开始支持异步校验。 表单,包含各种输入组件以及对应的校验;我们可以通过数据驱动的方式来生成完成表单。 示例 默认配置使用 一个完整的包含所有的内置表单相关组件。 <cube-form :model="model" :schema="schema" :immediate-

  • 此方法返回'NUMERIC FORM'的当前设置,该设置用于在系统上进行数学计算。 语法 (Syntax) FORM() 参数 (Parameters) 没有 返回值 (Return Value) 此方法返回'NUMERIC FORM'的当前设置,该设置用于在系统上进行数学计算。 例子 (Example) /* Main program */ say FORM() 当我们运行上述程序时,

  • 在大多数Web应用程序中,表单是从用户获取信息的最重要的小部件,例如登录表单/反馈表单,以便可以将值保存在数据库中以供将来参考。 表单窗口小部件用于此目的。 在创建表单之前,我们应该了解xTypes。 xType定义Ext JS UI组件的类型,该组件在呈现组件期间确定。 例如,元素可以是我们将xType作为textField的文本框,或者元素只能具有我们具有Numeric xType的数值。 不