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
