Angular Parsor错误:在从8到12的角度更新过程中出现意外标记

Angular Parsor错误:在从8到12的角度更新过程中出现意外标记,angular,angular12,Angular,Angular12,我从8点到12点在做角度版本更新。其中我得到了这个构建错误 error NG5002: Parser error: Unexpected token {, expected identifier, keyword, or string at column 2 in [{{maxLength}}]} My component.html错误行如下所示 <div> <span>Characters left: {{maxLength - formInputs.acco

我从8点到12点在做角度版本更新。其中我得到了这个构建错误

error NG5002: Parser error: Unexpected token {, expected identifier, keyword, or string at column 2 in [{{maxLength}}]}
My component.html错误行如下所示

<div>
    <span>Characters left: {{maxLength - formInputs.accountStatusReasonComment?.length}}</span>
</div> 

左字符:{{maxLength-formInputs.accountStatusReasonComment?.length}

这个表达式在Angular 12中有更新吗?有什么想法吗?

如果输入.accountStatusReasonComment的
未定义,表达式可能会变为
{{maxLength-}
。对于Angular 8,直到运行时才能找到它,但从Angular 9开始,Ivy AoT是默认的渲染引擎。它可能会发现这样有用的边缘案例错误

您可以尝试以下操作,而不是使用安全导航操作符


左字符:{{maxLength-(formInputs.accountStatusReasonComment.length | | 0)}

如果未定义
formInputs.accountStatusReasonComment.length
,则将使用数值
0

如果未定义
formInputs.accountStatusReasonComment
,则表达式可能会缩减为
{maxLength-}
。对于Angular 8,直到运行时才能找到它,但从Angular 9开始,Ivy AoT是默认的渲染引擎。它可能会发现这样有用的边缘案例错误

您可以尝试以下操作,而不是使用安全导航操作符


左字符:{{maxLength-(formInputs.accountStatusReasonComment.length | | 0)}

如果未定义
formInputs.accountStatusReasonComment.length
格式,则将使用数字
0

看起来不错,您可以在stackblitz上共享吗?也许maxLength会员不是公开的。看起来不错,你能在stackblitz上分享吗?也许maxLength会员不公开。谢谢Michael,我会试试这个。我有另一个类似{{reasonObject&&reasonObject.settings?reasonObject.settings.okbuttoname:“保存更改”}的场景,这个场景也会引发错误。有什么解决办法吗?@NithinPaul:您可能需要在短路中再降低一级:
{(reasonObject&&reasonObject.settings&&reasonObject.settings&&reasonObject.okbuttonname)?reasonObject.settings.okbuttonname:'save changes'}
@NithinPaul:如果您正在使用,您可以直接在模板中使用:
{{reasonobject.settings.okbuttoname???'save changes'}
。再次感谢,我尝试了倒数第二个选项,现在我得到了这样一个消息-“{{maxLength}中第12列的解析器错误:意外标记}”,我给出了您提到的确切语法。我不确定倒数第二个选项是什么意思。你是说nullisch凝聚算子吗?还要确保模板中访问的所有变量(
maxLength
formInputs
reasonobject
)都是
public
。谢谢Michael,我会尝试一下。我有另一个类似{{reasonObject&&reasonObject.settings?reasonObject.settings.okbuttoname:“保存更改”}的场景,这个场景也会引发错误。有什么解决办法吗?@NithinPaul:您可能需要在短路中再降低一级:
{(reasonObject&&reasonObject.settings&&reasonObject.settings&&reasonObject.okbuttonname)?reasonObject.settings.okbuttonname:'save changes'}
@NithinPaul:如果您正在使用,您可以直接在模板中使用:
{{reasonobject.settings.okbuttoname???'save changes'}
。再次感谢,我尝试了倒数第二个选项,现在我得到了这样一个消息-“{{maxLength}中第12列的解析器错误:意外标记}”,我给出了您提到的确切语法。我不确定倒数第二个选项是什么意思。你是说nullisch凝聚算子吗?还要确保模板中访问的所有变量(
maxLength
formInputs
reasonobject
)都是
public