问题标签 [safe-navigation-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 带有括号属性访问器的安全导航运算符
我遇到了无法使用点符号访问属性的情况,因为属性的名称包含一个点。
我有一个名为的对象translations
,其属性包含字符串翻译,例如该Tooltip.O2
属性包含图像工具提示的翻译:
当我这样做时,它认为我正在尝试使用属性访问内部的Tooltip
对象。我知道我可以使用括号符号来访问它:translations
O2
但是,安全导航运算符似乎?
不能与括号表示法一起使用。我试过写translations?['Tooltip.O2']
,但它导致了错误。
我想知道是否有办法使用点符号访问属性,或者是否有办法使用带括号符号的安全导航运算符?
typescript - Angular2+安全导航算子?
我使用 angular2+ 已经有一段时间了,我发现“安全导航运算符”是一种非常有用的语法,但现在我有一个问题,我是否可以编写通用服务或某事来处理“空”的事情而不是写“ ?.' 到处。
groovy - 是否有任何理由在构造函数上使用安全导航运算符?
我的一个朋友给我发了以下代码:
在构造函数之后是否有任何理由使用?.
运算符?据我了解,构造函数既可以返回一个新对象,也可以抛出一个异常,因此永远不会有null
.
c# - 为什么空条件运算符会更改常规属性访问?
我对空条件运算符如何与普通属性访问级联感到困惑。举两个例子:
我希望它们是等效的:首先,a?.b
评估 的值,然后result.c
评估。因此,如果a == null
,应该抛出异常。
但是,这只发生在第二个表达式中。第一个表达式的计算结果为null
,这意味着它与 相同a?.b?.c
。为什么?
angular - 在模板中访问 Observable 而无需每次都使用 Safe Navigation Operator 和 Async Pipe
我是 Angular 的新手,并且在 rxjs 和所有正在发生的异步事情上有点挣扎。
一些背景
假设您有一个像 facebook 这样的网站,其中包含个人资料。您可以通过导航至 来访问个人资料website.com/profiles/profileUrl
。同样,当单击配置文件时,您会得到路由到profiles/:profileUrl
Angular 术语。
这是如何实施的?
我路由到PersonProfileComponent
并从后端检索配置文件数据,两者都基于profileUrl
:
组件:
模板:
问题
虽然一切正常,但我确实不喜欢模板“”中的大部分内容(person | async)?.profileUrl
。person 对象可以变得非常大,具有许多属性,我无法想象像这样访问每个属性。就是感觉不对。在仍然使用异步管道的同时有没有办法解决这个问题,因为它会为我处理所有订阅和取消订阅?此外,我感谢任何关于此代码段以及如何更好地实施它的批评!
ruby - 带有字符串键的哈希的安全导航运算符
我有个问题:
如何将安全导航运算符&.
用于带有字符串键的散列?密钥转换将由 [原文如此] 强制性?
angular - 安全导航操作员在 Angular 2+ 中的性能是否存在缺陷
众所周知,在初始化绑定之前首先会触发 ngOnChanges。因此,在表达式中添加安全导航运算符是很常见的。
但我想这种方法是否对性能有缺点。那么下面的代码会更快吗?
item?.
特别是对于模板中有许多检查的组件。
c# - 可以使用 C# 安全导航运算符 (?.) 来检查 Object 是否为 null 以及属性吗?
这主要是一个语法糖/最佳实践问题。
这是一个有问题的代码示例:
我知道如果 _instanceData 为空,安全导航运算符将继续执行,但在这种情况下,条件中的第一个布尔值是否会按预期进行评估?这会成功地对 _instanceData 和 DataSourceType 进行空检查吗?
另一个例子:
在这种情况下,_instanceData 可能为空,也可能不是,但 ObjInfo 为空。仅对对象和属性进行老式的空值检查是更好的做法,还是可以按预期完成工作?
编辑:这个问题更好地描述为:if (obj?.prop != null)
相当于
if (obj != null && obj.prop != null)
angular - 如果我在 Angular 中初始化对象,为什么需要安全导航运算符 (Elvis)
Angular 8,Django 3。我Restaurant
在视图中显示一个对象RestaurantView
。RestaurantView
获取方法Restaurant
:_ngOnInit
然后显示在 html 文件<h1>{{restaurant.name}}</h1>
中。如果我没有将 Elvis 运算符放在 html 文件中,因为<h1>{{restaurant?.name}}</h1>
视图正确显示,但我收到控制台错误property "name" not defined
。我不明白如果在初始化RestaurantView
时返回一个Restaurant
对象,为什么我会得到这个空错误。
angular - 我应该在哪里使用 Angular 中的安全导航(猫王运算符,“?”)?
毫无疑问,我们在字符串插值 ( {{}}
) 中使用安全导航来安全地导航嵌套对象中的值,并检查空值或未定义。我有一个问题,是否可以将安全导航也用于:
ngIf
ngFor
ngModel
ngClass
- 和其他 html 属性绑定,如
[disabled]
,[style]
等。
我应该使用哪些场景而不应该使用哪些场景?