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
