편집 : 해결웹 서비스에서 JSON으로 XML 변환 및 객체에 매핑 - 각도
각도를 사용하여 프로젝트를 만드는 과정. 개체 목록을 표시하려고하는 서비스가 있습니다. http.get을 사용하여 json에 대한 응답을 프로젝트의 객체 (프로젝트 ID, 이름 등등 속성을 가짐)에 매핑하려고 시도합니다. 문제는 데이터가 (dev-teamcity에있는) 웹 서비스가 XML 형식.
내 응용 프로그램을 실행 는 전혀 데이터가 반환되지 않습니다. 이 XML 데이터를 Project 객체에 매핑하는 방법은 무엇입니까? 저는 각도와 JS/TS를 처음 접했고 이에 대한 도움이 조금이라도 감사 할 것입니다. 미리 감사드립니다. 내 코드 :
project.model.ts :
export class Project {
project_id: string;
name: string;
description: string;
constructor(obj: any) {
this.project_id = obj.project_id;
this.name = obj.name;
this.description = obj.description;
}
}
project.service.ts :
export abstract class ProjectService {
//methods
abstract fetchProjects(): Observable<Project[]>;
}
project.service.http.ts :
@Injectable()
export class ProjectServiceHttp extends ProjectService {
//variables
baseUrl = "...";
//constructor
constructor(private http: Http) {
super();
}
//methods
fetchProjects(): Observable<any>{
let headers = new Headers({'Content-Type': 'application/json'});
let options = new RequestOptions({headers: headers});
return this.http.get(this.baseUrl, options)
.map((response: Response) =>
{
return response.json();
})
.catch(this.handleError);
}
private handleError(error: any) {
// In a real world app, we might use a remote logging infrastructure
// We'd also dig deeper into the error to get a better message
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.log(errMsg); // log to console instead
return Observable.throw(errMsg);
}
GetProjectStatus(project_id: string): string {
throw new Error("Method not implemented.");
}
GetProjects(project_id: string): Project[] {
throw new Error("Method not implemented.");
}
}
프로젝트 .viewer.component.html :
@Component({
selector: 'project-viewer',
templateUrl: './project-viewer.html',
styleUrls: ['./project-viewer.css']
})
export class ProjectViewerComponent {
name = 'ProjectViewerComponent';
projects: Project[];
errorMessage = "";
stateValid = true;
constructor(private service: ProjectService) {
this.fetchProjects();
}
private fetchProjects() {
this.service
.fetchProjects()
.subscribe(response =>{
this.projects = response;
console.log(response);
},
errors=>{
console.log(errors);
});
}
private raiseError(text: string): void {
this.stateValid = false;
this.errorMessage = text;
}
}
프로젝트 viewer.html :
<h3>Projects </h3>
<div >
<ul class= "grid grid-pad">
<a *ngFor="let project of projects" class="col-1-4">
<li class ="module project" >
<h4 tabindex ="0">{{project.project_id}}</h4>
</li>
</a>
</ul>
</div>
오류는 내가 얻을 : ".? [TS] 이름 '옵션'을 찾을 수 없습니다습니까 당신은 '옵션'을 의미" - project.service.http.ts 프로젝트에서 메소드 가져 오기 및 [ts] 형식 '(응답 : 응답) => 약식'의 인수를 '매개 변수'에 할당 할 수 없습니다 (값 : 응답, 색인 : 번호) => 약속 '. 'response'및 'value'매개 변수 유형이 호환되지 않습니다. 및 [ts] 'ProjectServiceHttp'유형에 'handleError'속성이 없습니다. –
Liam
이제 콘솔 오류가 발생합니다. ProjectViewerComponent.html : 4 오류 오류 : 'object'유형의 '[object Object]'다른 지원 개체를 찾을 수 없습니다. NgFor는 배열과 같은 Iterable에 대한 바인딩 만 지원합니다. – Liam
프로젝트 배열을 표시하려고하는 HTML 파일과 관련이 있습니까? – Liam