0
나는 생성자에 Http
를 주입 기본 ServiceBase
클래스가 있습니다각도/타이프 라이터는 기본 클래스에 서비스를 주입하지만 하위 클래스에서
@Injectable()
export class WeatherService extends ServiceBase<Weather> {
constructor(http: Http) {
super(http);
}
getWeather(): Promise<Weather> {
return this.getData('api/weather');
}
}
:이 다음 하위 클래스에 의해 확장
import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
export abstract class ServiceBase<T> {
constructor(private http: Http) {
}
protected getData(url: string): Promise<T> {
return this.http.get(url).toPromise()
.then(response => response.json() as T)
.catch(this.handleError);
}
private handleError(error: any): Promise<any> {
console.log('An error occurred', error);
return Promise.reject(error.message || error);
}
}
을
그러나 모든 하위 클래스에 Http
을 삽입하고 부모 클래스에 매개 변수를 전달하지 않으려면 super(http);
을 호출하는 것이 좋습니다. 자식 클래스는 모두 서비스를 사용하는 부모 클래스에서 메서드를 호출하므로 기본 클래스에 Http
만 삽입하면됩니다.
당신이 찾고있는 [이 사람] (https://stackoverflow.com/q/37482460/5621827) – jitender