angular - angular4.x, parameter for ngOnChanges-metoden


Her er et offisielt demo-kodesnitt:

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

Mitt spørsmål er parameteren til ngOnChanges.

changes er parameteren, etter symbolet :, er typeannotasjonen.

Jeg er forvirret over {[propKey: string]: SimpleChange}.

Det ser ikke ut som en destrukturering og ikke som opt: {key: string}.

Svar #1

Det antyder at hvis din egenskap (key) er av typen string, vil den returnere et objekt av typen SimpleChanges. Dette har noe med TypeScript å gjøre, ikke med Angular.

La oss gå litt mer i detalj:-

La oss si at changes-objektet har noe som dette {name: SimpleChange, age: SimpleChange}. Da betyr denne typevalideringen at hvis du passerer en nøkkel som streng, for eksempel "minor", så vil det returnere et objekt av typen SimpleChange.

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

Videre, hvis du ønsket å hoppe over dette, kan du det. Den eneste forskjellen vil være typekonvertering og validering.

Du kan også bruke dette som referanse:

 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}`);
     }
}

For flere detaljer, prøv dette

Svar #2

{[propKey: string]: SimpleChange} er grensesnittet som beskriver et array av SimpleChange-objekter og propKey som strengindeks (et oppslagsverk).

Så endringer: {[propKey: string]: SimpleChange} er et array av SimpleChange-objekter og propKey-strengindekser

Relaterte artikler