如何在Angular 5应用中正确使用@Input()?

时间:2019-05-28 05:41:54

标签: angular

我在父组件中具有以下模板:

<my-table (loaded)="onTableLoaded()" [objId]="objId"></my-table>

我遇到的问题是,加载子组件时objId为null。 我可以在孩子中添加api调用,但我想避免这样做。任何想法如何允许 可以将父级中api调用中的值转移给子级?

2 个答案:

答案 0 :(得分:0)

如果要在角度组件之间传递数据,应使用@ Angular / core库中的输入和输出属性。为了传递数据,您应该使用@Input(),然后输入所需属性的名称。例如在子组件中的ts中,您可以编写:

  @Input() dataEntry:boolean;

,并且在主机组件中,当数据在主机组件中时,将此输入用作子组件的属性:

在主机组件HTML中,您可以编写:

    <child [dataEntry]="....."></child>

但是有关更多信息,您可以在此处阅读文档:

https://angular.io/guide/component-interaction

答案 1 :(得分:0)

通常代码应该足够

<my-table [objId]="objId"></my-table>

因此问题必须在另一侧。 首先,您应该正确命名

<my-table [childObjectId]="parentObjectId"></my-table>

类似的东西,选择您认为是好的名字。

然后您应该可以使用它。 如果使用objectId异步,则需要在生命周期钩子中检查/处理它。这里是可用的生命周期挂钩:Angular - Lifecycle Hooks

如果这样做没有帮助,请确保要插入的值不为空,或者可以在此处发布组件。