【问题标题】:Delay rendering router outlet延迟渲染路由器出口
【发布时间】:2020-05-09 23:33:20
【问题描述】:

我是 Angular6 的新手并面临这种情况:

我在 app.component.ts 有一个 API。获取数据后,将其存储在会话存储中以供其他组件(即 abcComponent)使用。

这里的问题是,当 abcComponents 尝试从会话中获取时,app.component 中的 API 尚未完成,因此它没有存储在会话存储中

使用路由器插座加载我的其他组件。

我尝试使用resolve,但是resolve中的服务被每个组件调用。所以任何建议都会很有用

【问题讨论】:

    标签: angular typescript angular6


    【解决方案1】:

    在 Angular 中解决这个问题的常用方法是:

    1. 创建服务并将其标记为@Injectable
    2. 在服务调用 API 时,使用返回 observables 的 Angular HttpClient 模块。
    3. 在 abcCompoent 中注入服务并订阅调用 API 的 observable,然后根据组件的需要使用数据。

    我知道这听起来可能令人困惑,但这里有一个很好的例子的 Angular 文档:Communicating with backend services using HTTP - Angular docs

    【讨论】:

    • 基本上我只想在应用程序中调用该 API 一次,响应数据将被缓存以在其他组件中使用。
    • 那么通常的方式就是使用NgRx。 (ngrx.io) 这样您就可以配置存储并读取全局状态并订阅状态更改。
    【解决方案2】:

    你想在 abccomponent 中调用 api,而不是 app.component。并且 abccomponent 应该有某种微调器来向用户显示正在加载数据。

    【讨论】:

    • 如果组件在数据到达之前被隐藏,Angular 没有绑​​定错误。
    猜你喜欢
    • 2017-04-23
    • 2023-04-08
    • 2017-12-07
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    相关资源
    最近更新 更多