angular4.x,ngOnChanges方法的参数

时间:2017-05-18 05:42:06

标签: angular typescript

以下是官方演示代码段:

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

我的问题是ngOnChanges的参数。

changes是符号:之后的参数,是类型注释。

我对{[propKey: string]: SimpleChange}感到困惑。

它似乎不像解构而不像opt: {key: string}

2 个答案:

答案 0 :(得分:3)

它表明,如果您的属性(键)的类型为 string ,则它将返回 SimpleChanges 类型的对象。这与打字稿相关,而不是与角色有关。

让我们深入了解一些细节: -

让我们说更改对象有类似{name: SimpleChange, age: SimpleChange}的内容。那么这种类型验证意味着你传递了字符串中的键,  说"minor"然后它将返回 SimpleChange 的对象。

let updatedNameChanges  = changes["name"]; 
// name is in string, so updatedNameChanges will be a SimpleChange object.

此外,如果你想跳过这个,你可以。唯一的区别是类型转换和验证。

您也可以将其用作参考:

 ngOnChanges(changes: {[propKey: string]: SimpleChange}) {
   let log:string[] = [];
   for (let propName in changes) {
     let changedProp = changes[propName];
     let to = JSON.stringify(changedProp.currentValue);
     if (changedProp.isFirstChange()) {
       log.push(`Initial value of ${propName} set to ${to}`);
     } else {
       let from = JSON.stringify(changedProp.previousValue);
       log.push(`${propName} changed from ${from} to ${to}`);
     }
}

有关详细信息,请try this

答案 1 :(得分:0)

{[propKey: string]: SimpleChange}是将SimpleChange个对象和propKey数组描述为字符串索引(字典)的接口。

所以更改:{[propKey: string]: SimpleChange}是一个SimpleChange对象和propKey字符串索引的数组