如何 return 从服务对象到 angular 中的组件
How to return object from service to component in angular
我想在 ngOninit 中访问特定的 json。所以我在点击编辑按钮时有 id,在该 id 的帮助下,我从数据库中获取完整的对象,如表单名称、表单 json 等等。所以我想从服务中 return json 到 ngOninit。
这是服务。
GetFormById (id: number) {
return this.httpClient.get<FormTemplate[]>(this.API_URL +
"GetFormTemplate/" + id).subscribe(data => {
console.log(data);
return data;
});
}
在控制台中,我正在从我保存的数据库中获取完整的对象。
这里是组件
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
var json = this.dataService.GetFormById(+id);
}
比如如何在 ngOnInit 中获取 json。
编辑
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(response => {
console.log(response);
const temp = response['TemplateJson'];
})
initJq();
var formData = '[{"type":"header","subtype":"h1","label":"Inquiry"},{"type":"paragraph","subtype":"p","label":"Paragraph content"},{"type":"text","label":"First name","name":"text - 1554220470561","value":"Vipul","subtype":"text"},{"type":"date","label":"Date Field","className":"form - control","name":"date - 1554220484446","value":"2019 - 04 - 25"},{"type":"button","label":"Send Inquiry","subtype":"button","className":"btn btn - primary","name":"button - 1554220480284","style":"primary"}]';
this.formBuilder = (<any>jQuery('.build-wrap')).formBuilder({ formData });
// Sample code to handle promise to get for data on page load directly
this.formBuilder.promise.then(formBuilder => {
console.log(formBuilder.formData);
});
}
喜欢任何东西 json 我想在 var formData 中传递它。
您没有在服务 class 中订阅 Observable
,而是在组件中:
在服务中,只需 return 来自您的服务方法的 Observable
:
GetFormById (id: number): Observable<FormTemplate[]>{
return this.httpClient.get<FormTemplate[]>(this.API_URL + "GetFormTemplate/" + id);
}
在您通过服务方法订阅 Observable
return 的组件中:
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(data => {
console.log(data);
});
}
不要订阅内部服务,订阅内部组件onInit。
GetFormById (id: number) {
return this.httpClient.get<FormTemplate[]>(this.API_URL + "GetFormTemplate/" + id);
}
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(data => {
console.log(data);
})
}
这不是您订阅 Observable 的方式。在处理异步操作(例如 HTTP 请求)时,您应该阅读 documentation/tutorial。同时,这是我们解决您的问题的方法。
为您效劳,
GetFormById (id: number) {
return this.httpClient.get<FormTemplate[]>(`${this.API_URL}GetFormTemplate/${id}`);
}
在您的 component.ts 上,我们通过调用 subscribe()
方法 return 可观察值。
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(id).subscribe(response => {
console.log(response);
const templateObj = response.TempleteJson;
})
}
我想在 ngOninit 中访问特定的 json。所以我在点击编辑按钮时有 id,在该 id 的帮助下,我从数据库中获取完整的对象,如表单名称、表单 json 等等。所以我想从服务中 return json 到 ngOninit。
这是服务。
GetFormById (id: number) {
return this.httpClient.get<FormTemplate[]>(this.API_URL +
"GetFormTemplate/" + id).subscribe(data => {
console.log(data);
return data;
});
}
在控制台中,我正在从我保存的数据库中获取完整的对象。
这里是组件
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
var json = this.dataService.GetFormById(+id);
}
比如如何在 ngOnInit 中获取 json。
编辑
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(response => {
console.log(response);
const temp = response['TemplateJson'];
})
initJq();
var formData = '[{"type":"header","subtype":"h1","label":"Inquiry"},{"type":"paragraph","subtype":"p","label":"Paragraph content"},{"type":"text","label":"First name","name":"text - 1554220470561","value":"Vipul","subtype":"text"},{"type":"date","label":"Date Field","className":"form - control","name":"date - 1554220484446","value":"2019 - 04 - 25"},{"type":"button","label":"Send Inquiry","subtype":"button","className":"btn btn - primary","name":"button - 1554220480284","style":"primary"}]';
this.formBuilder = (<any>jQuery('.build-wrap')).formBuilder({ formData });
// Sample code to handle promise to get for data on page load directly
this.formBuilder.promise.then(formBuilder => {
console.log(formBuilder.formData);
});
}
喜欢任何东西 json 我想在 var formData 中传递它。
您没有在服务 class 中订阅 Observable
,而是在组件中:
在服务中,只需 return 来自您的服务方法的 Observable
:
GetFormById (id: number): Observable<FormTemplate[]>{
return this.httpClient.get<FormTemplate[]>(this.API_URL + "GetFormTemplate/" + id);
}
在您通过服务方法订阅 Observable
return 的组件中:
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(data => {
console.log(data);
});
}
不要订阅内部服务,订阅内部组件onInit。
GetFormById (id: number) {
return this.httpClient.get<FormTemplate[]>(this.API_URL + "GetFormTemplate/" + id);
}
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(data => {
console.log(data);
})
}
这不是您订阅 Observable 的方式。在处理异步操作(例如 HTTP 请求)时,您应该阅读 documentation/tutorial。同时,这是我们解决您的问题的方法。
为您效劳,
GetFormById (id: number) {
return this.httpClient.get<FormTemplate[]>(`${this.API_URL}GetFormTemplate/${id}`);
}
在您的 component.ts 上,我们通过调用 subscribe()
方法 return 可观察值。
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(id).subscribe(response => {
console.log(response);
const templateObj = response.TempleteJson;
})
}