2017-05-18 7 views
1

ここngOnChangesメソッドのパラメータは、公式デモコードスニペットです。angular4.x、

changesは、シンボル:の後のパラメータで、型注釈です。

私は{[propKey: string]: SimpleChange}について混乱しています。

デストラクチャリングのようではなく、opt: {key: string}のようではありません。

+2

何? –

+0

https://www.typescriptlang.org/docs/handbook/interfaces.html#indexable-types – yurzui

+0

@MurhafSousli質問:私は '[propKey:string]'について混乱しています – novaline

答えて

0

それはあなたの財産(キー)タイプ文字列であるならば、それはタイプSimpleChangesのオブジェクトを返しますことを示唆しています。これは、タイプミスに関連するものであり、角ではありません。

のは、いくつかの詳細を掘り下げてみましょう: -

はのは、オブジェクトがこの{name: SimpleChange, age: SimpleChange}のようなものを持って変更するとしましょう。次に、このタイプの検証は、文字列にkeyを渡した場合、 と答えてとし、SimpleChangeのオブジェクトを返します。

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

さらに、これをスキップしたい場合は、できます。唯一の違いは型キャストとバリデーションです。

また、REFとしてこれを使用することができます。詳細については

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