【问题标题】:Angular 2 Class BindingAngular 2 类绑定
【发布时间】:2018-05-28 06:34:40
【问题描述】:

我对此很陌生,并试图从下面的 Angular 2 模板代码中理解事物。

<label for=”productNameInput”>Product Name</label> 
<input type=”text”
id=”productNameInput” 
placeholder=”Product Name”
[ formControl]=”myForm. get ( ’productName ’)” 
[ (ngModel) ] = ”productName”>

我有两个问题:

  • 应该在相应的类中定义哪些属性?
  • ngModel 周围的大括号是做什么用的?

非常感谢!

【问题讨论】:

标签: angular binding


【解决方案1】:
  • [(ngModel)]

[( )] = BANANA IN A BOX

[(x)] 语法将属性绑定的括号 [x] 与事件绑定的括号 (x) 组合在一起。

这是 Angular 中的双向数据绑定,意思是说你是在控制器端还是视图端进行更改,它将改变它们的角度值。

您也可以在attribute 绑定和event 绑定中将其分开。像这样-

[ngModel] 用于属性绑定,(ngModelChange) 用于事件绑定

有关双向数据绑定的更多信息,您可以在此处参考官方文档-

对应的类中应该定义哪些属性?

productName 在您的代码中是变量,您需要在类中定义该变量以将值绑定到视图部分。

【讨论】:

    【解决方案2】:

    在组件的逻辑中你应该定义

    myForm: FormGroup;
    
    productName: string;
    
    constructor(private formBuilder: FormBuilder) {
      this.myForm = this.formBuilder.group({ productName: '' });
    }
    

    由于代码的编写方式(糟糕),您必须这样定义它,但您可以大大简化它。

    ngModel 周围的大括号(和括号)指的是 Angular 的数据绑定:

    • [x] 表示您输入一个值到框架
    • (x) 表示框架输出对您的价值
    • [(x)]双向绑定:你可以通过输入一个值来更新视图,输出值时你的组件的变量就会更新。

    顺便说一句,formControlngModel 是重复的,你应该删除它们中的任何一个。

    【讨论】:

      【解决方案3】:

      ngModel 周围的大括号表示 2 路绑定。 这里有更多信息的链接

      https://blog.thoughtram.io/angular/2016/10/13/two-way-data-binding-in-angular-2.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-03
        • 2017-07-06
        • 2017-06-03
        • 2016-03-29
        • 2020-03-29
        • 1970-01-01
        • 2017-11-05
        • 1970-01-01
        相关资源
        最近更新 更多