当用户点击按钮时,我的component.ts
中有一个名为doGET
的方法被调用。在doGET
方法内部,我订阅了service.ts
中返回可观察对象的getData
方法。但是每次我点击按钮或调用doGET
方法时,它是否都会被订阅?这是在Angular中进行API调用的正确方式吗?
以下是我的Angular组件代码:
import { Component } from '@angular/core';
import { AppService } from './app.service'
import { Http, Response, RequestOptions, Headers } from '@angular/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [AppService]
})
export class AppComponent {
title = 'app works!';
constructor(private service: AppService) {
}
doGET() {
this.service.getData().subscribe(res => {
console.log('result is ', res);
})
}
}
以下是 Angular 服务的代码:
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from "@angular/http";
@Injectable()
export class AppService {
apiRoot: string = "http://httpbin.org";
constructor(private http: Http) { }
getData(){
let url = `${this.apiRoot}/get`;
return this.http.get(url)
}
}