javascript - Er det noen forskjell i ytelse eller minne mellom å sette input-verdi i ngOnInit versus å sette input-egenskap i Angular .ts-fil?


Er det noen reelle fordeler ved å gjøre noe som dette

_user: any;

@Input()
public set user(user: any) {
  this._user = user;
}

vs å gjøre noe sånt

@Input() user: User;
_user: any;

ngOnInit() {
  this._user = this.user;
}

når jeg sender objektet til mitt barnekomponent på denne måten

<div *ngFor="let user of users">
  <app-child [user]="user"></app-child>
</div>

Svar #1

Siden din variabel user ikke er privat når du bruker:

@Input() user: User;

Du trenger ikke å tilordne til en annen variabel.
@Input-tilgang for feltet er mye enklere å bruke. Men hvis du vil ha litt logikk når du får tilgang til variabelen, eller du vil at variabelen skal være privat, bør du bruke @Input-tilgang for setttere/gettere. F.eks.:

private _user: User;

@Input
set user(u: User) {
    u.name = 'Foo'
    this._user = u;
}

Så det er ganske likt når det gjelder ytelse. Mer informasjon kan du finne der