我觉得这很简单。
我的Angular2应用程序中有一个组件,表由从API解析的数据提供。
有一件事一切都很正常:当我加载页面时,数据就不存在了;只有在我开始对过滤器进行搜索之后,表才会填充。
组件具有以下方法:
getList() {
return this.service.getList()
.subscribe(tasks => {
this.data = tasks
});
}
通过服务从API收集数据。此方法由ngInit()方法触发,但返回未定义的。只有当我触发onChangeTable()方法时,我才能在我的视图中得到结果。
我想我应该在渲染视图之前预先加载数据.
预先表示感谢:)
好的,这是我的文件:
发布于 2016-12-02 11:10:05
好的,
我把解决办法发到这里。
Resolver的实现起了很大作用。
我创建了一个Resolver:
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:
...
{path: '', component: ListTaskComponent, resolve: { data: TaskResolver }},
最后,在我的部分中,我可以得到这个:
public constructor(private route:ActivatedRoute) {
...
}
public ngOnInit():void {
this.data = this.route.snapshot.data['data'];
this.onChangeTable(this.config)
}
希望这对男人有帮助。
谢谢您:)
https://stackoverflow.com/questions/40914655
复制相似问题