Ionic中ng-container使用问题:调查列表渲染报错求助
解决Ionic中ng-container的模板解析错误:Can't bind to 'value' since it isn't a known property of 'ng-container'
问题根源
ng-container是Angular提供的逻辑占位容器,它不会被渲染成任何真实的DOM元素,因此它不支持像普通HTML元素那样绑定value这类DOM属性——这就是你遇到错误的核心原因。
分步解决方案
1. 修正模板中的错误代码
直接移除ng-container上的[value]="dongu.value"绑定,因为它完全没必要,也不被支持。修改后的模板代码如下:
<ion-item> <ion-label>{{currentDongu}}</ion-label> <ng-container *ngFor="let dongu of donguler"> {{dongu.value}} {{dongu.label}} {{dongu.secenek1}} {{dongu.secenek2}} {{dongu.secenek3}} </ng-container> </ion-item>
2. 根据你的实际需求调整代码
从你的TypeScript代码来看,你似乎想实现步进式的调查问题展示(通过key控制当前显示的问题,点击按钮切换),那你的模板可能存在逻辑混淆——*ngFor会遍历所有问题,而currentDongu是单个问题。这里给你两种优化方向:
方向A:步进式显示单个问题(更符合你的ts逻辑)
如果是想一次只显示一个问题,不需要ng-container和*ngFor,直接基于currentDongu渲染即可:
<ion-item> <ion-label>{{currentDongu?.label}}</ion-label> <div>{{currentDongu?.secenek1}}</div> <div>{{currentDongu?.secenek2}}</div> <div>{{currentDongu?.secenek3}}</div> </ion-item> <button *ngIf="Showbutton" (click)="ileri()">下一题</button>
注意:使用
?.可选链操作符避免donguler未初始化时的空指针错误。
方向B:一次性显示所有问题
如果是想遍历展示所有调查问题,直接用*ngFor在ion-item上即可,不需要currentDongu:
<ion-item *ngFor="let dongu of donguler"> <ion-label>{{dongu.label}}</ion-label> <div>{{dongu.secenek1}}</div> <div>{{dongu.secenek2}}</div> <div>{{dongu.secenek3}}</div> </ion-item>
关于错误提示的补充说明
错误提示里的两个方案在这里并不适用:
- 方案1:添加
CommonModule是针对自定义指令的场景,而你这里的value不是指令,是无效的DOM属性绑定; - 方案2:添加
NO_ERRORS_SCHEMA会隐藏错误,但这是“掩耳盗铃”的做法,会掩盖真实的逻辑问题,不推荐使用。
内容的提问来源于stack exchange,提问作者mckr00
相关产品推荐
相关产品推荐

