我在组件中使用@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指令?我暂时没有任何错误
答案 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