Webstorm:“必须是左值”是什么意思

时间:2019-02-12 11:56:23

标签: angular webstorm

在编写我的角度应用程序时,我收到了这个“奇怪的”错误消息:

"Must be lvalue" Error

代码运行得非常好,我找不到此错误消息的任何文档。什么意思?

该代码来自:https://stackoverflow.com/a/45144391/639035,这是一个被接受的具有15票赞成的答案。

代码:

<input placeholder="TEST"
       [ngModel]="phone_numbers && phone_numbers[0]?.full_number"
       (ngModelChange)="phone_numbers?.length && phone_numbers[0].full_number=$event">

错误消息:

  

必须为左值

     

必须为左值

1 个答案:

答案 0 :(得分:3)

这是使用JSAnnotator进行Webstorm检查的方式。

尝试使用以下代码创建简单的js文件:

let a,b;
a && b=1;

enter image description here

如果该错误听起来像这样会更好:

  

ReferenceError:左侧的赋值无效

另请参阅issue

Webstorm警告我们此代码是不常见的情况,例如,编写它可能会出错

if (a === 1 && b = 2) {
                 /\
   Seems it should be == or ===. 
   So it's easy to make such mistake like this

我们如何排除此错误?

  • 通过以下方式重写代码

(ngModelChange)="phone_numbers?.length ? phone_numbers[0]['full_number']=$event : null"
  • input元素压制JSAnnotator

<!--suppress JSAnnotator -->
<input placeholder="TEST"
       [ngModel]="phone_numbers && phone_numbers[0]?.full_number"
       (ngModelChange)="phone_numbers?.length && phone_numbers[0]['full_number']=$event">

同样,这只是一个警告,取决于您如何处理。