angular - Property binding vs attribute interpolation -
i have read article difference between property , attribute bindings. understood, of time, angular2 prefers property bindings, because after each change in data, dom updated. (if mistaken, please correct me).
i have custom component , use parent component. in it, have @input named truevalue. when initiate truevalue parent via property binding, sometimes, not change. used following code:
<my-checkbox [(ngmodel)]="chkitems" [disabled]="!editmode" [truevalue]="y"></my-checkbox> if send true or "1" truevalue works, if send "y" or "yes", not work. forced use attribute binding. don't know problem.
i have changed it, following:
<my-checkbox [(ngmodel)]="chkitems" [disabled]="!editmode" truevalue="y"></my-checkbox> thanks in advance
property binding like
[truevalue]="..." evaluates expression "..." , assigns value
"true" evaluates value true "y" unknown. there no internal y value in typescript , no property in component class instance, scope of template binding. in case want
[truevalue]="'y'" note additional quotes make y string.
plain attributes assigned inputs
truevalue="y" is plain html without angular2 binding , attribute values strings. therefore assign string y.
another way string interpolation
truevalue="{{true}}" would assign value "true" (as string) because expression withing {{...}} evaluated , converted string before passed input. can't used bind other values strings.
to explicitly bind attribute instead of property can use (besides truevalue="y" creates attribute doesn't evaluation)
[attr.truevalue]="'y'" or
attr.truevalue="{{'y'}}" attribute binding helpful if want use truevalue attribute address element css selectors.
Comments
Post a Comment