【问题标题】:ngOnChanges how the simpleChanges object is handledngOnChanges 如何处理 simpleChanges 对象
【发布时间】:2018-08-19 10:35:43
【问题描述】:

我对 Angular 5 很陌生,我正在从官方网站学习组件交互

ngOnChanges(changes: {[propKey: string]: SimpleChange}) {}

以及在生命周期中的钩子

ngOnChanges(changes: SimpleChanges) {}

我知道 SimpleChanges 是 ngOnChanges 作为参数获取的一个对象,我们可以使用它访问以前的值和当前值。但我不明白以下是如何工作的:

ngOnChanges(changes: {[propKey: string]: SimpleChange}) {}

我也找不到任何好的解释

【问题讨论】:

    标签: angular angular5


    【解决方案1】:

    这只是 ngOnChanges 函数中参数的类型糖。

    {[propKey: string]: SimpleChange
    

    上面的意思是,参数是一种hashmap,其中key是一个字符串,value是一个SimpleChange函数的实例。

    “propKey”只是一个名称,您也可以输入“aaa”或“myPropKey”,这样仍然可以使用。

    请看https://www.sitepen.com/blog/2013/12/31/definitive-guide-to-typescript/abd 搜索hashmap

    【讨论】:

      【解决方案2】:
      {[propKey: string]: SimpleChange}
      

      表示:具有字符串类型键的对象,每个键与 SimpleChange 类型的值相关联。

      如果你的组件有 3 个输入 a、b 和 c,并且输入 a 和 c 发生变化,那么 Angular 将使用如下参数调用 ngOnChanges():

      {
        a: {
          previousValue: ...,
          currentValue: ...,
          firstChange: false
        }
        c: {
          previousValue: ...,
          currentValue: ...,
          firstChange: false
        }
      }
      

      【讨论】:

      • 这意味着我们可以定义我们想要的密钥类型??
      • 关键是输入的名称。如果输入的 foo 发生变化,该对象将有一个名为 foo 的键。
      • 很抱歉,我在第一行感到困惑,我们将输入作为 SimpleChange 类型的对象,然后我们将其用作对象的 SimpleChanges 类型的值??跨度>
      • 当我说“输入”时,我指的是组件的输入。不是关于 ngOnChanges 的论点。 IE。用@Input()装饰的字段/属性。
      猜你喜欢
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 2011-10-13
      • 2016-01-16
      • 2012-06-06
      相关资源
      最近更新 更多