难以理解Angular / JS语法(?。)

时间:2017-08-17 03:25:03

标签: javascript angular

您好我正在查看以下Angular代码,如果用户未在“名称”字段中输入其名称,则为错误消息div。

<div *ngIf ="userName.errors?.required && username.touched" class="alert alert-danger"> Name is required</div>

据我所知,如果触摸名称字段并且未在名称字段中输入用户名,则此div将显示

但我不确定我是否遵循?.语法。我该怎么读呢。

由于

3 个答案:

答案 0 :(得分:3)

它被称为Safe Navigation Operator。如果您希望对象可能是null并且您需要访问其属性,则使用它。这是为了防止因访问空值属性而导致的错误。

答案 1 :(得分:1)

?.表示只检查此属性是否有值,换句话说,如果userName.errors由于任何原因未定义,则会忽略该属性。

答案 2 :(得分:0)

C#中,它被称为Null Propagation。见下面的代码,它们表达了相同的含义。

var name = _currentTpl != null ? _currentTpl.TplName : null;

var name = _currentTpl?.TplName; 

在Angular中,它被称为safe navigation operator。实际上,没有区别。