Угловая переменная не определена

#angular #service #undefined

Вопрос:

У меня есть функция, которая передается из службы для получения значения ip ip я помещаю ее в переменную свойства, но значение становится неопределенным ?

когда я проверяю в консоли это.Переменная ipClient, если она существует в области видимости, но почему при выводе она становится неопределенной? как мне получить это значение, чтобы его можно было использовать глобально?

 
ipClient:any; \property


  ngOnInit(){
    this.serviceGlobal.getIpClient().subscribe(
      (resp:any) =>{
        this.serviceGlobal.getSettingIp(resp.ip).subscribe(
          (resp:any) =>{
            this.ipClient = resp
            console.log(this.ipClient)\the value is there
          }
        )
      }
    )
    console.log(this.ipClient) \the value is undefined

  }
 

любая помощь или совет, которые я действительно ценю, спасибо

Ответ №1:

Вызов службы-это асинхронная операция, и вы пытаетесь получить доступ к переменной вне подписки, поэтому вы получаете неопределенное значение.

Прямо сейчас этот код строки выполняется непосредственно перед завершением вызова службы и, следовательно Undefined ,.

Комментарии:

1. спасибо за ваше объяснение, я очень новичок в angular, не могли бы вы подсказать мне решение, как сделать значение переменной свойства?

2. Этого не будет, единственный способ получить значение-это подписка, а затем выполнить любую операцию по своему усмотрению.

3. значит, я могу совершать операции только внутри подписки?, хорошо, спасибо за объяснение

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