我有一个要求ngOnInit
,我从 URL 中提取查询参数,准备一个 url 用于进行后端api
调用,http://localhost:8080/myapp/video0=5&video1=6
并发出接收到的数据以在其他组件中使用。
现在,当我查看浏览器控制台和网络选项卡时,我看到对我的后端 api 的两个调用:一个没有参数,一个有参数。显然,带有参数的参数可以获取我想要的数据。这data
需要在另一个组件中进行进一步处理。
以下是ngOnInit
一个组件的外观:
ngOnInit() {
this.activatedRoute.queryParams.subscribe((params: Params) => {
this.video0 = params['video0'];
this.video1 = params['video1'];
this.video2 = params['video2'];
this.video3 = params['video3'];
this.sharedRequestPath = this.prepareSharedLinkRequestPath(this.video0,this.video1,this.video2,this.video3); // creates a url for fetching data.
this.getSharedVideosData(this.sharedRequestPath); //this makes the backend call.
this.addVideosEvent.emit(this.sharedVideos); //finally emitting the data populated in variable
});
}
从后端获取数据的部分:getSharedVideoData
getSharedVideosData(requestPath) {
this.modelService.getVideos(requestPath).subscribe(
data => {
this.videoData = data;
for (let j = 0; j < this.videoData.length; j++) {
this.sharedVideos[j] = this.videoData[j];
}
});
}
getVideos
中的方法modelService
是:
getVideos(videoDataQuery): Observable < MyObj[] > {
return this.http.get(videoDataQuery).map((response: Response) => {
return <MyObj[]> response.json()
}).catch(this.handleError);
}
最后,另一个组件上的发射器事件:
<app-form (addVideosEvent)="addVideos($event)" ></app-form>
addVideos
方法用于进一步处理包含警报语句的数据。当页面加载时,我看到两个警报语句,但都没有任何数据。
这很奇怪,因为浏览器网络选项卡向我显示了响应,但我猜它没有正确发出。我做的正确吗?
我怎样才能做到这一点?