首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从API - Angular2加载数据后呈现视图

从API - Angular2加载数据后呈现视图
EN

Stack Overflow用户
提问于 2016-12-01 15:35:53
回答 1查看 1.1K关注 0票数 2

我觉得这很简单。

我的Angular2应用程序中有一个组件,表由从API解析的数据提供。

有一件事一切都很正常:当我加载页面时,数据就不存在了;只有在我开始对过滤器进行搜索之后,表才会填充。

组件具有以下方法:

代码语言:javascript
运行
复制
getList() {
    return this.service.getList()
        .subscribe(tasks => {
            this.data = tasks
        });
}

通过服务从API收集数据。此方法由ngInit()方法触发,但返回未定义的。只有当我触发onChangeTable()方法时,我才能在我的视图中得到结果。

我想我应该在渲染视图之前预先加载数据.

预先表示感谢:)

好的,这是我的文件:

  • 服务链接
  • 组件链接
  • 表组件链接
  • HTML 链接
EN

回答 1

Stack Overflow用户

发布于 2016-12-02 11:10:05

好的,

我把解决办法发到这里。

Resolver的实现起了很大作用。

我创建了一个Resolver:

代码语言:javascript
运行
复制
import {Resolve, RouterStateSnapshot, ActivatedRouteSnapshot} from "@angular/router";
import {Injectable} from "@angular/core";
import {TaskService} from "../services/task.service";
import {Observable} from "rxjs";

@Injectable()
export class TaskResolver implements Resolve<any> {
    constructor(private service: TaskService) {}

    resolve(
        route: ActivatedRouteSnapshot,
        state: RouterStateSnapshot
    ): Observable<any>|Promise<any>|any {
        return this.service.getList();
    }
}

然后,我在路由器中使用这个Resolver:

代码语言:javascript
运行
复制
...
{path: '', component: ListTaskComponent, resolve: { data: TaskResolver }},

最后,在我的部分中,我可以得到这个:

代码语言:javascript
运行
复制
public constructor(private route:ActivatedRoute) {
    ...
}

public ngOnInit():void {
    this.data = this.route.snapshot.data['data'];
    this.onChangeTable(this.config)
}

希望这对男人有帮助。

谢谢您:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40914655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档