angular - 之间的确切区别是什么?和?:角度运算符
问题描述
我没有考虑?:(三元运算符)。有时我正在观看人们正在使用的 YouTube 教程?HTML 页面中的运算符,有时他们在 TS(typescript) 页面中使用?: 。我不太清楚它们到底有什么不同?
解决方案
所以使用 ? 在 Angular 中,您可能会参考以下三种使用方式。
安全操作员
当您在 HTML 中设置一个带有问号的值时,这是一种安全检查,因此您在访问变量之前检查该变量是否已定义。(尝试访问不存在的值将导致错误)。
下面的代码片段会this.example
在检查会导致错误的文本之前检查是否有一个值。如果在未定义的情况下访问文本,这几乎可以确保出现不需要的行为。
<p>{{example?.text}}</p>
这可以确保一切安全,要阅读有关安全操作员的更多信息,请阅读此处找到的 Angular 文档
可选参数
我认为您正在寻找的下一个用途是函数/接口中的可选值。这意味着如果在没有 的情况下调用该接口将不会引发错误,exampleValue
因为它现在已被定义为可选。
export interface Itest
{
exampleValue?: string; // optional
neededValue: string; // non-optional
}
或者在一个函数中,如果没有可选指示符 ( ?
),如果调用该函数,则会发生错误。this.exampleFunction();
public exampleFunction(test?): void
{
console.log(test);
// this function can be called with or without test being passed in without causing an error.
}
可以在这篇关于可选参数的简短文章中找到更多示例
条件(三元)运算符
问题不是在寻找这个,而是认为将其作为另一种?
可以在使用中看到的情况将其弹出是有意义的。
当在打字稿中看到时,您可以在(if / else)
看起来像这样的条件三元语句中使用它。
const example = 'hello';
console.log(example === 'hello' ? 'im true' : 'im false');
这与编写以下语句相同。
const example = "hello";
if (example === 'hello')
{
console.log('im true');
}else
{
console.log('im false');
}
推荐阅读
- javascript - 如何保存与其字段标签相关的输入?
- visual-studio - 如何将此for循环转换为递归?视觉基础
- python - Django - 获取按不同属性分组的查询集列表对象属性
- react-native - 您如何识别 Expo Push Notification Token 所属的 Expo 项目?
- javascript - Google 脚本 - Array.sort - compareFunction 的操作数反转?
- excel - 从动态范围内的单元格中删除最后一个逗号
- c# - Xamarin C# 将双嵌套集合绑定到代码中的 Switch IsToggledProperty
- clojurescript - Clojure 脚本。发生重新渲染时重置 Reagent 中的原子
- angular - 类型 'never' 必须有一个返回迭代器的 '[Symbol.iterator]()' 方法。打字稿
- r - 打印以逗号分隔,删除引号并在 R 中添加特殊引号