2016-12-06 59 views
2

这里是我的代码: 模板是:Angular2数据绑定不适用于中文属性名称?

<div> 
    时间: {{DataContext.时间}} 
</div> 

这里“时间”是中国焦炭这意味着时间, 并在打字稿文件。我定义了一个DataContext属性。

export class TestClass { 
    @Input() 
    DataContext:any; 
} 

但它不工作,我得到了一个错误。这里是错误信息“模板解析错误:解析器错误:意外的标记词法错误:意外字符{{时间}} ......”

我真的需要它支持中文字符,因为json数据来自一个旧系统,所有数据的属性都使用中文字符。

任何人都可以帮到我吗?

+1

我想你需要创建一个错误报告。 –

+1

是的,我也在这里报告https://github.com/angular/angular/issues/13265 – Max

回答

1

我跑到相同的问题,我创建服务/管道将字符转换为Unicode,如下所示。希望它有帮助(虽然这是不正确的方式,但暂时解决问题)

var _escape_overrides = { 0x00:'\uFFFD',0x80:'\u20AC',0x82:'\u201A',0x83:'\u0192',0x84:'\u201E',0x85:'\u2026',0x86:'\u2020',0x87:'\u2021',0x88:'\u02C6',0x89:'\u2030',0x8A:'\u0160',0x8B:'\u2039',0x8C:'\u0152',0x8E:'\u017D',0x91:'\u2018',0x92:'\u2019',0x93:'\u201C',0x94:'\u201D',0x95:'\u2022',0x96:'\u2013',0x97:'\u2014',0x98:'\u02DC',0x99:'\u2122',0x9A:'\u0161',0x9B:'\u203A',0x9C:'\u0153',0x9E:'\u017E',0x9F:'\u0178' }; 

function escapeHtml(str){ 
    return str.replace(/([\u0000-\uD799]|[\uD800-\uDBFF][\uDC00-\uFFFF])/g, function(c) { 
     var c1 = c.charCodeAt(0); 
     // ascii character, use override or escape 
     if(c1 <= 0xFF) return (c1=_escape_overrides[c1])?c1:escape(c).replace(/%(..)/g,"&#x$1;"); 
     // utf8/16 character 
     else if(c.length == 1) return "&#" + c1 + ";"; 
     // surrogate pair 
     else if(c.length == 2 && c1 >= 0xD800 && c1 <= 0xDBFF) return "&#" + ((c1-0xD800)*0x400 + c.charCodeAt(1) - 0xDC00 + 0x10000) + ";" 
     // no clue .. 
     else return ""; 
    }); 
} 
+0

谢谢,请给我一个完整的示例代码,在哪里使用这个管道,这里“时间”是一个属性DataContext,我不知道如果转换它,数据绑定将无法正常工作。 – Max

+0

我试过了,像这样'

{{时间 | UnicodeConvert}}
',这里“UnicodeConvert”是你的代码的新管道,我也用管道只是返回“时间”,它仍然不起作用。有任何想法吗? – Max

相关问题