Javascript 三元是否在角度中使用动态属性?
我尝试使用angular更改div的id,并使用以下代码:Javascript 三元是否在角度中使用动态属性?,javascript,angular,attributes,conditional-operator,Javascript,Angular,Attributes,Conditional Operator,我尝试使用angular更改div的id,并使用以下代码: <div [id]="'item_' + (itemName !== undefined ? itemName.replace(' ', '-').toLowerCase() : '')"> 那么,我的错误在哪里?有没有可能像这样使用三元组,有没有其他方法来做我想做的事情 谢谢。问题是,您的表达式是这样解释的: itemName !== ( undefined ? itemName.replace(' ', '-').to
<div [id]="'item_' + (itemName !== undefined ? itemName.replace(' ', '-').toLowerCase() : '')">
那么,我的错误在哪里?有没有可能像这样使用三元组,有没有其他方法来做我想做的事情
谢谢。问题是,您的表达式是这样解释的:
itemName !== ( undefined ? itemName.replace(' ', '-').toLowerCase() : '' )
要解决此问题,请在此处添加括号:
(itemName !== undefined) ? itemName.replace(' ', '-').toLowerCase() : ''
您的代码是正确的,因此错误可能来自其他地方。关于三元运算符,您可以通过使用角度模板安全导航运算符来简化此操作:
<div [id]="'item_' + (itemName?.replace(' ', '-').toLowerCase() || '')">
一种方法是在.ts文件中添加,在Oninit()中执行id生成逻辑
itemName?:一串
为此使用管道可能更容易。在控制器上使用属性而不是内联脚本。我只是按照你说的做了,它没有改变任何东西:(
<div [id]="'item_' + (itemName?.replace(' ', '-').toLowerCase() || '')">
itemName? : string;
<div [id]="itemName"></div>