2016-07-06 3 views
2

Когда я протоколирование значения моего переменным внутри подписываться я иметь значение, но когда делаю это вне его я получаю неопределенный ???:Подписаться Observable значения

this._postService.getConf("app/conf/conf.json") 
    .subscribe(res =>{ 
     this.home = JSON.stringify(res); 
     console.log("value :" + this.home); 

я хочу, чтобы инициализировать свой домашние переменные с определенным значением, что я делаю это на ngOnInit но получить значение не определено, когда я пытаюсь получить его снаружи:

Это моя функция:

ответ

3

Вот как наблюдаемые работу. Когда ответ от сервера приходит, обратный вызов, переданный в subscribe(...), вызывается наблюдаемым.

console.log() за пределами subscribe() выполнен до того, как звонок на сервер даже сделан.

+0

спасибо за ваш ответ и как я могу повлиять на значение моей переменной сэр? я был thinikg делать это на ngOnInit будет исправлять его – Anna

+0

Что означает «влиять на значение моей переменной сэр»? Какая переменная? Как повлиять на это? –

+0

Мне жаль, что я не объяснил: я пытаюсь получить json-файл, содержащий данные по: ngOnInit для печати данных при загрузке страницы, а также ссылку на сервер, которую я получаю из файла и затрагиваю его мой var home, поэтому, прежде чем получать данные с сервера, я получаю домашнюю ценность, чтобы протащить его через мой сервис, и я делаю это на ngOnInit, пожалуйста, не стесняйтесь спрашивать, нужна ли вам дополнительная информация. – Anna

2

Мой ngOnInit() вызвал процесс, который получает данные из БД. Я ожидал переменные this.##, которые были обновлены в методе, который будет доступен после вызова. Как было описано выше, вызов переходит к наблюдаемому, что означает, что переменные недоступны в ngOnInit(). Но все они были заполнены, когда отображалась страница HTML.

Таким образом, решение состоит в том, чтобы выполнить всю необходимую работу внутри метода, а затем обратиться к переменным, которые будут заполнены в HTML.

this.service.getCity(zip).subscribe(
    data => { 
     if (data.errStatus == 0) { 
      console.log("data: " + data.xx.List); 

      this.xx.List = data.xx.List; 
      console.log("data2: " + this.xxList); 
     } else { 
      data.errText; 
      console.log(data.errText); 
     } 
    }, 
    err => console.error(err), 
    () => console.log('done') 
); 
Смежные вопросы