【发布时间】:2019-09-24 03:03:53
【问题描述】:
我想知道在 Angular 组件中为可选属性设置默认值的“Angular/Typescript 方式”是什么?当传递给可选属性的值为null 或undefined 时,我遇到了麻烦。
目前我有这样的事情:
export class FooComponent implements OnInit {
@Input() foo = 'foo';
@Input() bar = 0;
@Input() baz?: string;
}
如果您声明默认值,则不必指定类型,因为它是分配值的类型,并且默认情况下属性是可选的。这是bar 和foo 属性的情况。
或者,您可以使用? 标记此属性是可选的,但您不能声明其默认值。 baz 属性就是这种情况。
现在让我们看看当您将不同的值传递给这些属性时会发生什么。
<app-foo-component
[foo]
[bar]="null"
[baz]="undefined"
>
</app-foo-component>
如果我在控制台记录这些属性,这就是我得到的:
foo 将是正确的'foo'
bar 将是 null
baz 将是 undefined
当传递的值为空/未定义时,是否有一种优雅的方法来设置默认值,或者我是否需要像这样检查 OnInit?
OnInit() {
this.bar = this.bar || 0;
}
感觉好像有一些方法可以做到这一点。对我来说,可选属性意味着值可能会丢失、null 或未设置,但是当我想设置默认值时,它仅在属性丢失或为空时才有效。在这些情况下,它仍然将 value 设置为 null 或 undefined,这似乎令人困惑。
【问题讨论】:
-
确实可以声明类型,但请记住 typescript 转换为 javascript 并且变量获取您发送的值的类型。例如你有一个
@Input() mynumber:number,你发送<app-fool [mynumber]='Hello word'/>
标签: angular typescript angular-components