我没有考虑?:(三元运算符)。有时我在YouTube教程中观看人们在HTML页面中使用?。运算符,有时在TS(typescript)页面中使用?:的情况。我不清楚它们到底有什么不同?
答案 0 :(得分:3)
所以使用?时有区别。在Angular中,您可能会参考这三种用法。
安全操作员
在HTML中设置带有问号的值时,这是安全的检查,因此在访问变量之前先检查其是否已定义。 (尝试使用不存在的访问值将导致错误)。
下面的代码段将在检查文本前检查this.example
是否具有值,这将导致错误。如果在未定义的情况下访问文本,则几乎可以确保不需要的行为。
<p>{{example?.text}}</p>
这可以确保一切安全,以了解有关安全运算符的更多信息,并通读Angular文档found here
可选参数
我认为您正在寻找的下一个用途是函数/接口中的可选值。这意味着如果接口没有被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.
}
有关此示例的更多示例,请参见有关Optional Parameters的简短文章
条件(三元)运算符
问题不是寻找这个问题,而是认为将其弹出是另一种可以看到?
的情况。
在打字稿中看到时,您可以像这样在条件三元语句(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');
}
更多信息和条件(三元)运算符的用法here.
答案 1 :(得分:1)
.div-right-1{
background-attachment:fixed
background-color: yellow;
height: 100%;
width: 50%;
margin: 0px;
float: right;
}
是safe-navigation operator。它只是简单地做到这一点,因此,如果先前的值为null,则不会引发任何错误。有一些细节,但基本上可以将其视为一个用于空值检查的三元表达式。
?.
...与以下内容大致相同:
<div>{{item?.value}}</div>