Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 三元是否在角度中使用动态属性?_Javascript_Angular_Attributes_Conditional Operator - Fatal编程技术网

Javascript 三元是否在角度中使用动态属性?

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

我尝试使用angular更改div的id,并使用以下代码:

<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>