Angular2中[(ngModel)]拼接循环值绑定textarea失效求助
解决Angular模板中[(ngModel)]动态属性绑定问题
嘿,我一眼就看出问题所在了——你现在把'projectViewService.projData.explanation'+item.value当成字符串字面量传给[(ngModel)]了,所以它直接把这段文本显示出来,而不是去读取对应的属性值。
要解决这个问题,你需要用对象的方括号访问语法来动态获取属性,而不是字符串拼接的写法。具体修改如下:
<tbody *ngFor="let item of projParameters; let i = index"> <!-- 保留你的其他代码 --> <textarea placeholder="" [(ngModel)]="projectViewService.projData['explanation' + item.value]" [editable]="isFormEditable" ></textarea> </tbody>
为什么这样能行?
'explanation' + item.value会先计算出完整的属性名(比如当item.value是"test"时,得到explanationtest)- 然后通过
projData[计算后的属性名]的方式,就能正确访问到projectViewService.projData下对应的属性,这样[(ngModel)]就能完成双向绑定了。
额外注意事项
- 要确保
projectViewService.projData确实存在对应的属性,比如如果item.value是"1",那projData里得有explanation1这个属性,否则绑定的值会是undefined - 如果
projData是响应式对象(比如用RxJS的可观察对象包装),要确保属性变化能被Angular的变更检测机制捕捉到,不然视图可能不会同步更新 - 确认
projectViewService已经正确注入到你的组件中,并且是公共属性(public),这样模板才能访问到它
内容的提问来源于stack exchange,提问作者David R
相关产品推荐
相关产品推荐

