2016-12-06 61 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

相關問題