angular - inputparameter till barnkomponent får inget värde även om jag kan se det i elementen
Jag har en enkel komponent för förälder-barn för att skicka en parameter.
i föräldrakomponenten: jag får värden från en HTTP-förfrågan i en tjänst:
this.Service.getdataId(this.dataId).subscribe(
response => {
this.DataSource = response;
this.personid = response.PersonInfo.Id; // this is being bound to from template for @input parameter.
}
i min föräldramall har jag:
<app-view [personid ]="personId"></app-view>
i min barnmall:
@Input() personid : string = "";
min barnmall får aldrig värdet. MEN, i Chrome dev-verktyg kan jag se att värdet gavs till elementet:
app-view _ngcontent-iwk-c94="" _nghost-iwk-c93="" ng-reflect-personid="1da772c6-640f-456c-bba8-c25633">
Så, jag kan se det där, men det är inte tilldelat Input-variabeln i min komponent. Dessutom är värdet avskuret av någon anledning, det ska vara en GUID, och de sista 6 tecknen är avskurna. Jag har ingen manipulation av detta värde någonstans. Det går från HTTPClient/Service -> Föräldrakomponent -> Barnkomponent.
REDIGERA: Jag kopplade OnChange-händelsen. Det verkar som värdet ändras flera gånger. Jag loggar värdet i OnChange och det händer två gånger - första gången är värdet jag förväntar mig där, andra gången är det inte. Hoppas att någon kan förklara situationen för mig?
Svar #1
Det verkar som att du försöker komma åt värdet för tidigt. Indata är tillgängliga under OnIni(), men inte innan.
Svar #2
Att koppla in på onchange enligt min redigering verkar lösa det. Det dubbla anropet till onchange var ett nybörjarmisstag med en rad som satte värdet till "". Jag antar att hooken för oninit inträffar för tidigt innan egenskapen är bunden, därav behovet av att använda onchange istället.