我使用路由并尝试读取get参数id
:
public classes: any;
ngOnInit() {
this.route.params.subscribe(params => {
if (params['id']) {
let a = getData(this.classes, params['id']);// Notice here
}
});
您可以注意到this.classes
个对象。它是空的。
下面我有一个填充this.classes
的方法:
public loadClasses(): void {
this.classService.getAllClasses()
.subscribe(data => {
this.classes = data;
});
}
问题是路由首先工作因此对象this.classes
是空的。
如何调用第一个loadClasses()
来加载路由数据:`a a = getData(this.classes,params [' id']);?
答案 0 :(得分:3)
要获取数据,您需要路由参数和类,这看起来像combineLatest的完美案例:
ngOnInit() {
combineLatest(this.route.params, this.classService.getAllClasses())
.subscribe(([params, classes]) => {
if (params['id']) {
let a = getData(classes, params['id']);
}
});
}
答案 1 :(得分:0)
我认为你应该这样做:
public classes: any;
ngOnInit() {
this.loadClasses().subscribe(() => getData());
private getData(): void {
this.route.params.subscribe(params => {
if (params['id']) {
let a = getData(this.classes, params['id']);// Notice here
}
});
}
public loadClasses(): void {
this.classService.getAllClasses()
.subscribe(data => {
this.classes = data;
});
}