행운을 시험해 보도록하겠습니다. 사람들이 더 잘 이해하는 데 도움이되기를 바랍니다. 특히 내가 는 가 및 게시 service.ts 공식 documentaton에서 언급 한 바와 같이라는 seprate 파일에 요청을 얻을 수있는 항상 더 나은 각도 2의 요청을받을 수행하는 방법에 대해 이야기합니다.
우리는, 즉 세 개의 파일, example.component.ts, example.service.ts 및 모델 파일 examplemodel.ts을
example.component.ts해야합니다
import {OnInit, Component} from "@angular/core";
import {ExampleService} from "./example.service"; // import service
import {ResponseFromGet, ErrorMessage} from "./examplemodel"; // import your model
@Component({
providers: [ExampleService], // add your service here in order to use in component file
templateUrl: './example.template.html'
})
export class ExampleComponent implements OnInit{
//Specify Url for Get request
Private _getRequestUrl = "http://entergetrequesturlhere";
// Make variable for stroing get method reponse which can be used in ur template file
responseFromGetMethod: ResponseFromGet; // this can be ur model file which represnts ur JSON model
// For storing Error
errorMessage: ErrorMessage;
//use Constructor to inject your service in component file
constructor(private _exampleService: ExampleService){}
// Since we implemented OnInit we need to override its method ngOnInit
// this method is called when page is loaded
ngOnInit(): any{
this.callGetMethod(this._getRequestUrl);
}
// callGetMethod outside OnInit but inside class ExampleComponent
callGetMethod(getUrl: string){
this._exampleService.getMethodName(getUrl)
.subscribe(
responseFromGetMethod => {
this.responseFromGetMethod = responseFromGetMethod; // Store response from getmethod in your local variable
},
error => this.errorMessage = <any>error // Store error message receiver from server
);
}
}
example.service.ts
import {Http, Response} from "@angular/http";
import {Injectable} from "@angular/core";
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/catch';
import {ResponseFromGet} from "./examplemodel";
@Injectable()
export class ExampleService{
constructor(private _http: Http) { }
// GET request To access data and specify observable type from model
getMethodName(getUrl): Observable<ResponseFromGet>{
return this._http.get(getUrl)
.map(this.extractData) // to check for the status code
.catch(this.handleError); // to check error
}
// Extracts from response
private extractData(res: Response) {
if (res.status < 200 || res.status >= 300) {
throw new Error('Bad response status: ' + res.status);
}
let response = res.json();
return response || {};
}
// To handle Error
private handleError(error: Response) {
console.error(error);
return Observable.throw(error.json() || 'Server error');
}
}
examplemodel.ts
export interface ResponseFromGet{
id: number;
name: string;
}
export interface ErrorMessage{
message: string;
}
그리고 마지막으로 HTML 파일 example.template.
<div>
<h2>{{responseFromGetMethod?.name}}</h2> // this will print the name from the json file
<h3>{{errorMessage?.message}}</h3> // this will print the error if any
</div>
HTML는 마지막이 내 JSON 파일
{
"id": 789;
"name": "Angular2";
}
마십시오 찬성 투표의 사람 당신이 유용 할 경우의 모델입니다.
이미 데이터가 있습니다. 정확히 무엇을 달성하고 싶습니까? 사용 가능한 공간을 얻으려면 * retrievedObject.Data [0] .AvailableSpace * –
Observable을 구독하는 방법을 표시하십시오. – micronyks
아약스 히트 구문에 대한 확인 http://www.syntaxsuccess.com/viewarticle/angular-2.0-and-http – Anuj