【问题标题】:What is data-bound properties?什么是数据绑定属性?
【发布时间】:2017-01-14 23:57:45
【问题描述】:

我正在尝试了解 angular2 中的 OnInit 功能并阅读文档:

说明

实现该接口后执行自定义初始化逻辑 您的指令的数据绑定属性已被初始化。

ngOnInit 在指令的数据绑定属性之后调用 已经被第一次检查,并且在它的任何孩子之前 已检查。当指令被调用时它只被调用一次 实例化。

我不明白directive's data-bound properties是什么意思?

【问题讨论】:

  • 目前提供的答案是错误的。根据docs,输入和数据绑定属性不是同一个概念。例如。这里:Initialize the directive or component after Angular first displays the data-bound properties and sets the directive or component's input properties.

标签: angular


【解决方案1】:

当你有一个组件时

@Component({
  selector: 'my-component'
})
class MyComponent {
  @Input() name:string;

  ngOnChanges(changes) {
  }

  ngOnInit() {
  }
}

你可以像这样使用它

<my-component [name]="somePropInParent"></my-component>

这使name 成为数据绑定属性。

somePropInParent的值发生变化时,Angulars变化检测更新name并调用ngOnChanges()

在第一次调用ngOnChanges() 后,调用一次ngOnInit(),表示初始绑定 ([name]="somePropInParent") 已解析并应用。

更多详情见https://angular.io/docs/ts/latest/cookbook/component-communication.html

【讨论】:

  • 这并没有回答实际问题:数据绑定属性的定义是什么?
  • HTML 代码不可见,因为缩进不够。答案被接受了,所以我认为它确实回答了这个问题;-)。无论如何感谢您的提示 - 我更新了它。
  • @GünterZöchbauer 从您的回答中,我了解具有@Input 的组件属性,称为data-bound 属性,如果我错了,请纠正我。
  • 我不知道data-bound,对我来说它们只是“输入”。从组件视图(父组件)的用户看来,它们是属性,您可以使用数据绑定将值绑定到它们。您也可以对属性和本机属性使用数据绑定。因此我不知道称它为data-bound property 是否有意义。
  • @GünterZöchbauer,实际问题是“什么是数据绑定属性?”你没有回答。
【解决方案2】:

@Input 是一个装饰器,它使 类字段 作为 输入属性 并提供配置元数据。 输入属性绑定到模板中的 DOM 属性。 在更改检测期间,Angular 会自动使用 DOM 属性的值更新数据属性。

我希望这个答案可以帮助理解这个概念。

上面的示例包含 name 作为输入,该输入被绑定为 DOM 结构中组件的属性,并且角度会根据更改对其进行更新。

【讨论】:

  • 答案是错误的。 Angular 中的输入属性和数据绑定属性是不一样的。
【解决方案3】:

数据绑定属性只是类的属性

【讨论】:

    【解决方案4】:

    @Sasuke Uchiha、@Input 和数据绑定属性确实是一样的。请阅读 https://angular.io/guide/lifecycle-hooks 中的“请记住,指令的数据绑定输入属性在构造之后才设置。如果您需要根据这些属性初始化指令,请在 ngOnInit() 运行时设置它们”

    PS:无法评论答案,所以这样回复

    【讨论】:

      【解决方案5】:

      Reading the Docs,我们注意到:

      ngOnChanges():

      “在 Angular 设置或重置数据绑定输入属性时响应”

      如果你的组件不会被调用

      “没有输入,或者你在没有提供任何输入的情况下使用它”

      在ngOnInit方法上,我们也可以看到ngOnChanges()没有被调用

      “没有模板绑定的输入”

      最后,ngOnInit():

      "在Angular首次显示后初始化指令或组件 数据绑定属性并设置指令或组件的输入 属性。”

      总而言之,数据绑定和输入属性以及模板绑定输入都只是同一事物的别名,或者正如@GünterZöchbauer 指出的那样,它们只是“输入”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        • 2020-02-07
        • 1970-01-01
        • 2010-10-10
        • 1970-01-01
        • 2011-02-04
        相关资源
        最近更新 更多