在我的应用程序中,它们是一些来自常量文件的文本,声明如下:
export const EmpStrings = {
data: "Welcome {{employee.name}}"
}
在我的组件文件中有一个名为employee
的对象。
public employee = { name: 'xyz', dept: 'EE' }
现在在我的HTML中我想像这样使用它:
<div class='e-data' [innerHTML] = "EmpStrings.data"></div>
但这似乎没有奏效。 我尝试了各种变化:
[inner-html] = "EmpStrings.data"
[innerHTML] = {{EmpStrings.data}}
[innerHTML] = "{{EmpStrings.data}}"
但他们似乎都没有工作。
答案 0 :(得分:2)
使用${employee.name}
将angular变量绑定到innerHTML
"data": `Welcome ${employee.name}`
答案 1 :(得分:2)
如果您不想使用JitCompiler,那么您可以自己解析字符串
<强> component.ts 强>
ngOnInit() {
this.html = EmpStrings.data.replace(/{{([^}}]+)?}}/g, ($1, $2) =>
$2.split('.').reduce((p, c) => p ? p[c] : '', this));
}
<强>模板强>
<div [innerHTML]="html"></div>
答案 2 :(得分:0)
Angular不会像这样插入字符串,据我所知,其中一个原因是安全性。 const没有您的员工所在的上下文,因此您会看到错误,表明员工未定义。
你可以这样做:
改变你的常数:
export const EmpStrings = {data: "Welcome "};
然后:
<div class='e-data'>{{EmpStrings.data}}{{employee.name}}</div>
但如果由于某种原因你必须使用[innerHTML]
:
在您的组件类中,添加一个方法:
getWelcomeMessage(){return EmpStrings.data + this.employee.name;}
在组件视图中:
<div class='e-data' [innerHTML] = "getWelcomeMessage()"></div>