0

我有一个组件使用解析器获得这样的类别:

ngOnInit() {
    this.category = this.route.snapshot.data['category'];
}

因此,这很有效,并获得了我的类别,这本质上是一个用户列表。

从上述解析器获得用户名列表后,我在 ngOnInit() 中手动获取了用户帐户详细信息,但是当我将它们作为 Input() 传递给子组件时,它们尚未加载,

这会导致下面的错误被抛出,这是有道理的。

CategoryItemComponent.html:4 ERROR TypeError: Cannot read property 'id' of undefined
at Object.eval [as updateRenderer] (CategoryItemComponent.html:4)
at Object.debugUpdateRenderer [as updateRenderer] (core.js:11940)
at checkAndUpdateView (core.js:11312)
at callViewAction (core.js:11548)
at execComponentViewsAction (core.js:11490)
at checkAndUpdateView (core.js:11313)
at callViewAction (core.js:11548)
at execEmbeddedViewsAction (core.js:11511)
at checkAndUpdateView (core.js:11308)
at callViewAction (core.js:11548)
at execComponentViewsAction (core.js:11490)
at checkAndUpdateView (core.js:11313)
at callViewAction (core.js:11548)
at execEmbeddedViewsAction (core.js:11511)
at checkAndUpdateView (core.js:11308)
at callViewAction (core.js:11548)

我的问题是:我可以使用来自第一个解析器的用户列表作为第二个解析器的输入。如果是这样,这究竟是如何完成的?

编辑1:

我目前将下载的用户从 ngOnInit() 提供给子组件,如下所示:

<app-account [account]="account"></app-account>

我知道我可以作为@alokstar 的答案,但我想知道这是否是推荐的方式 - 或者是否有更优雅的嵌套解析器的方式。

4

1 回答 1

1

因此,如果需要此输入来加载子组件,那么您可以考虑在您的子组件加载之前为其设置条件,例如:

<child-component *ngIf = 'dataAvailable'>
</child-component>

或者,如果您想在输入未定义或不可用的情况下加载子组件,您可以在子组件中添加防御条件以摆脱“未定义”类型的错误。

于 2018-11-21T19:32:10.050 回答