为什么我的Angular中ngIf绑定的条件函数始终返回错误?
问题原因
- 你的
recurso方法未定义入参:模板中调用时已经传入了当前遍历项的dato.tipoGasto值,但方法内部没有接收该参数,反而直接读取this.dataRoute.tipoGasto dataRoute是数组类型:你在模板中使用*ngFor="let dato of dataRoute"遍历该数组,数组本身不存在tipoGasto属性,因此读取到的值永远为undefined,两个判断条件都无法命中,始终返回错误提示。
修复方案
首先修改TS文件中的recurso方法,增加入参接收模板传递的tipoGasto值,直接用入参做判断:
recurso(tipoGasto: string) { if(tipoGasto === "Inversión"){ return "[10] RECURSOS CORRIENTES" } if(tipoGasto === "Funcionamiento"){ return "[11] OTROS RECURSOS DEL TESORO" } else { return " Error! " } }
模板部分的逻辑不需要修改,原本的传参逻辑是正确的。
额外优化建议:可以将映射关系抽为常量对象,代码更简洁易维护
// 提前定义映射关系 private readonly GASTO_MAPPING: Record<string, string> = { 'Inversión': '[10] RECURSOS CORRIENTES', 'Funcionamiento': '[11] OTROS RECURSOS DEL TESORO' } recurso(tipoGasto: string): string { // 不存在匹配则返回错误 return this.GASTO_MAPPING[tipoGasto] ?? ' Error! ' }
内容的提问来源于stack exchange,提问作者Aragorn8806
相关产品推荐
相关产品推荐

