2016-06-25 3 views
0

우리 응용 프로그램에 날짜 형식을 제공해야합니다. 우리는 이것을 사용하여 날짜의 모든 표시 및 입력 형식을 설정합니다.각도 2 값 공급자 - 초기화시 API 호출에서 설정 한 값

이 항목을 응용 프로그램의 여러 위치에 제공해야합니다. 그러나 날짜는 고객에 따라 다릅니다. JSON 객체로 다양한 설정 (날짜 설정 중 하나)을 제공하는 API 호출이 있습니다.

DI를 통해 구성 옵션을 나타내는 개체를 값으로 제공 할 수 있기를 원합니다. 값을 제공하는 예제가 많이 있지만 동적이 아니라 모두 정적입니다.

는 내가 원하는 시작시 설정에서 오는 '/ MM/YYYY를 위해 dd',

provide('DateFormat', { 
    useValue: 'dd/MM/yyyy' 
}) 

그러나 내 DI 조성 루트에이 같은 일을하고 싶다.

나는 서비스를 통해 제공하려고 시도했지만, 서비스가 실행될 때 값을 사용할 수없는 몇 군데의 경쟁 조건에 문제가 발생합니다. 이 중 일부는 더 많은 관측 값을 사용하여 다시 작성하면 해결할 수 있지만 코드가 복잡해집니다. 그래서 DI를 통해 객체를 제공하고 다른 작업을하기 전에 값을 설정하는 방법이 필요합니다.

아이디어를 얻으려면 어떻게해야합니까?

답변

0

서비스를 부트 스트랩 또는 제공자의 서비스에 제공하는 경우 : 앱의 루트 구성 요소에서 [] 서비스를 인스턴스화합니다. 서비스 생성자에서 API를 통해 데이터를 가져올 수 있습니다.

첫 페이지가 표시되기 전에로드 될 때까지 기다려야하는 경우 데이터가로드되었음을 나타내는 관찰 가능 항목이 하나있을 수 있습니다. 관찰 대상을 구독하여 관찰 대상을 구독하여 새 구성 요소로 라우팅합니다. 또는 앱의 구조에 따라 서비스에서 설정 한 부울 관찰 가능 항목에 * ngIf를 사용하여 API 호출이 반환되고 데이터가 초기화 될 때까지 초기화 화면을 표시합니다.

해당 구성이 필요한 다른 모든 구성 요소는 생성자 args를 통해 주입하여 해당 서비스 인스턴스를 사용할 수 있습니다.

import {ConfigurationService} from 'path/to/configuration-service'; 

@Component({ 
    selector : '', 
    providers: [ConfigurationService] <<-- This instantiates a new 
    uninitialized service. Do this only in the root component. 


}) 

export ComponentNeedingDateFormat() { 
    constructor(private configurationService: ConfigurationService) { } 
} 

구성 요소 공급자에 포함 시키면 : [] 새 서비스를 인스턴스화합니다. 루트 구성 요소에만 삽입하려고합니다.

https://angular.io/docs/ts/latest/guide/dependency-injection.html