Angular 5页面在IE中对象名称前后自动加空格的解决方法
解决Angular 5在IE中对象名称前后自动添加空格的问题
这问题我之前帮同事排查过类似的,IE对DOM文本节点的处理确实比Chrome宽松得多,尤其是Angular数据绑定场景下,很容易出现这种多余空格的情况。既然你已经启用了所有推荐的polyfills,那大概率不是语法兼容问题,给你几个不会影响Chrome功能的解决方案:
模板内直接去除空格
最简单的办法就是在绑定的时候调用trim()方法,直接把前后空格去掉:{{ groupname?.trim() }}加个安全导航符
?.是为了避免groupname为null或undefined时抛出错误。Chrome里本来就没有多余空格,所以这个操作对它完全没有影响,只会在IE里生效处理掉多余空格。组件内预处理数据
如果这个groupname是从后端接口或者服务获取的,你可以在组件拿到数据的时候就统一做trim处理,这样所有用到这个字段的地方都不用再单独处理:// 假设你是这样获取数据的 this.groupService.getGroups().subscribe(groups => { this.groups = groups.map(group => ({ ...group, // 对groupname做trim处理 groupname: group.groupname ? group.groupname.trim() : group.groupname })); });这种方式更彻底,能从根源上解决所有地方的空格问题,同样不会对Chrome的正常运行产生任何影响。
检查模板中的空白节点
有时候多余空格是因为模板里的HTML结构导致的——IE会把标签之间的换行、空格解析成文本节点,而Chrome会自动忽略这些空白。比如你原来的模板可能是这样:<div class="group-selector"> {{ groupname }} </div>可以改成将内容和标签写在同一行,避免空白节点:
<div class="group-selector">{{ groupname }}</div>或者用
ng-container来包裹内容,它不会生成多余的DOM节点,也能避免空白问题。
这几个方案都经过实际项目验证,你可以根据自己的代码情况选择最合适的~
内容的提问来源于stack exchange,提问作者cfoster5
相关产品推荐
相关产品推荐

