javascript - Angular4中三种类型的数据绑定(bind)指令 : [val] , [(val)] , (val) 有什么区别

标签 javascript angular angular4-forms

考虑下面的代码,我试图理解三种不同的数据绑定(bind)方法之间的区别。由于我是 Angular4 的新手,我需要弄清楚何时使用什么。例如要分配 ngModel,请使用 [(ngModel)]。要分配禁用属性,请使用[disabled]。要分配 ngSubmit 处理程序,请使用 (ngSubmit)。很难区分它们中的每一个。

<section class="sample-app-content">
    <h1>Template-driven Form Example:</h1>
    <form #f="ngForm" (ngSubmit)="onSubmitTemplateBased()">
        <p>
            <label>First Name:</label>
            <input type="text"  
                [(ngModel)]="user.firstName" required>
        </p>

        <p>
            <label>Password:</label>
            <input type="password"  
                [(ngModel)]="user.password" required>
        </p>
        <p>
            <button type="submit" [disabled]="!f.valid">Submit</button>
        </p>
    </form>
</section>

最佳答案

  1. 属性绑定(bind) [val]: 单向进入 人们经常将属性绑定(bind)描述为单向数据绑定(bind),因为它沿一个方向流动值,从组件的数据属性到目标元素属性。

您不能使用属性绑定(bind)从目标元素中提取值。您无法绑定(bind)到目标元素的属性来读取它。您只能设置它。

  • 事件绑定(bind) (val):到目前为止,您遇到的绑定(bind)指令沿一个方向流动数据:从组件到元素。
  • 用户不仅仅盯着屏幕。他们在输入框中输入文本。他们从列表中挑选项目。他们点击按钮。此类用户操作可能会导致相反方向的数据流:从元素到组件。

    了解用户操作的唯一方法是监听某些事件,例如击键、鼠标移动、单击和触摸。您可以通过 Angular 事件绑定(bind)来声明您对用户操作的兴趣。

  • 双向绑定(bind) [(val)]:您通常希望显示数据属性并在用户进行更改时更新该属性。
  • 在元素方面,结合设置特定元素属性和监听元素更改事件。

    Angular 为此提供了一种特殊的双向数据绑定(bind)语法,[(x)]。 [(x)] 语法将属性绑定(bind)的括号 [x] 与事件绑定(bind)的括号 (x) 结合起来。

    关于javascript - Angular4中三种类型的数据绑定(bind)指令 : [val] , [(val)] , (val) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48193729/

    相关文章:

    javascript - 将 promise 与失败串联起来

    Angular2 路由器附加组件而不是替换它

    angular - CodeSandBox:Angular:错误类型错误:html2canvas_1.default 不是函数

    angular - 错误 : Can't bind to 'ngForIn' . Angular 4+

    javascript - jQuery如何按小时解析开始和结束时间

    javascript - 在 node.js 中,有什么方法可以识别唯一的调用堆栈/滴答间隔吗?

    javascript - 纯 Javascript 作为 Angular 2 服务

    angular - 名称为 : 'dateTime' 的表单控件没有值访问器

    javascript - Angular ng-select : selectedItems. map 不是函数

    javascript - jQuery 数据表 : Individual column searching not working