>

각각 6으로 URL과 속성을 외부화하려고합니다.

데이터를 얻기 위해 타사 URL을 호출하는 서비스가 있습니다.

weather-component.html->weather.component.ts->weather.service.ts

내 weather.service.ts에서

public getWeather() {
     // Here I have hardoded the URL and the api key.   
}

이를 구성 가능하도록 외부화하고 싶습니다.

파일을 구성 가능한 파일로 옮기고 읽는 방법을 잘 모르겠습니다.

  • 답변 # 1

    정확하게 같은 manish의 답변이지만 Angular 2에서 프로젝트를 시작할 때이 블로그는 매우 도움이되었습니다. http 게이트웨이를 통한 업그레이드가 크게 바뀌었고 angular가 4에서 httpclient를 변경했을 때 매우 유용했습니다.

    https://blog.sstorie.com/adapting-ben-nadels-apigateway-to-pure-typescript

    또한 기본 URL 등을 넣을 장소를 찾고 있다면 angular-cli에서 환경 ts 파일을 사용합니다. https://github.com/angular/angular-cli/wiki/stories-application-environments

  • 답변 # 2

    일반적인 서비스를 원한다고 가정합니다

    당신은 baseHttp.service.ts 를 가질 수 있습니다  그리고 weather.service.ts  API를 호출하도록 baseHttpservice를 확장합니다.

    와이즈 비즈

    baseHttp.service.ts

    와이즈 비즈

    @Injectable()
    export abstract class BaseHttpService {
        private baseUrl: string = Constants.BASEURL;
        protected method: string;
        protected serviceUrl: string;
        protected headers: Headers;
        constructor(private http: Http) {
            this.headers = new Headers();
            this.headers.append('Content-Type', 'application/json');
            this.headers.append('Accept', 'application/json');
        }
        call(params: any) {
            let url: string = this.setUrl();
            let options = new RequestOptions({ headers: this.headers });
            options.url = url;
            options.method = this.method;
            options.body = params;
            return this.http.request(url, options).toPromise()
                .then((response: any) => this.extractData(response))
                .catch((error: any) => this.handleError(error));
        }
        //complete the other functions
    }
    
    

    날씨 .service.ts를 삽입하고 weather.service.ts의 값을 무시하고 http 호출을 할 수 있습니다

    그래서

    weather.service.ts

     인터셉터 역할을하므로 모든 Http 호출을 인터셉트 할 수 있습니다.

    @Injectable() export class DashboardService extends BaseHttpService { constructor(private _http: Http) { super(_http); } getWeatherReport(params:any) { this.serviceUrl = 'some-url'; this.method = "GET"; return super.call(params); } }

  • 이전 scope - 라켓 코드에서"do"변수와 혼동
  • 다음 asp.net - C #에서 제네릭 형식 확장에 대해 null을 반환