角@Input()可能有也可能没有值

时间:2019-06-05 10:14:12

标签: angular

我在组件中使用@Input()从父组件接收值。调用子组件时,有时可能会有值发送到@Input(),有时没有。现在,我没有得到如果我没有将任何值传递给子组件,则会出现任何错误。可以吗?还是应该修改代码。

父组件

<!--THE CHILD DIRECTIVE WITH INPUT-->

<app-child [inputValue]="inputWithValue"></app-child>

<!--THE CHILD DIRECTIVE WITHOUT INPUT-->

<app-child ></app-child>

子组件

@Input() inputValue :any;

简而言之,我的问题是,

是否会有任何问题,在不提供任何输入的情况下调用child指令?我暂时没有任何错误

2 个答案:

答案 0 :(得分:2)

您不应从Angular收到任何错误。该值将存在或不存在。

在子组件中,请务必确保在使用它之前先检查该值,这非常简单,因为在未传递该值时尝试与该值进行交互可能会出错。

train_path = list_files('/content/gdrive/home/path/to/folder/containing/data/')

对于任何html都适用,请在尝试显示它之前检查它是否退出,可以使用@Input() inputValue :any; public ngOnInit(): void { if (this.inputValue) { console.log("value passed in, you can use it"); } } 。这实际上并不适用于字符串值,但是如果它是一个对象。在访问属性之前,请检查对象是否存在。

*ngIf

答案 1 :(得分:1)

如果您实际上需要此输入值来在模板上呈现某些内容,则会破坏您的规格。

当然,并非所有输入都是必需的,因此,如果它们可以为空,则只需在模板上添加ngIf包装器即可。

<div *ngIf="input">

</div