Angular 12中对象空字符串属性莫名变为undefined的异常排查
Angular 12 + Material 开发中对象属性显示异常问题排查与解决
- 问题现象:在全栈项目前端采用Angular 12 + Material开发时,定义的
data对象中contenido属性设为空字符串,使用console.log打印时表面显示正常,但展开对象后该属性变为undefined,其他属性也存在类似情况。 - 根因分析:问题源于一段异步代码中的错误清理逻辑:
在JavaScript中,空字符串object[key] = !object[key] ? undefined : object[key];""属于假值,!""会返回true,因此这段代码会将空字符串直接替换为undefined。而console.log的即时快照与展开时的实时取值存在差异,导致打印时表面显示正常,展开后才呈现被修改后的结果。 - 修复方案:调整清理逻辑,精准判断需要置为
undefined的场景,避免误处理空字符串等合法假值:// 仅当属性值为null或undefined时才置为undefined,保留空字符串、0等假值 object[key] = (object[key] === null || object[key] === undefined) ? undefined : object[key]; // 或者更直观的写法 if (object[key] === null || object[key] === undefined) { object[key] = undefined; }
内容的提问来源于stack exchange,提问作者Leandro Vera Farr
相关产品推荐
相关产品推荐

