#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. да, потому что только после этого вы сможете получить требуемое значение, и, как я уже сказал, это асинхронная операция, поэтому вам придется подождать, пока она не будет завершена. Пожалуйста, отметьте ответ как принятый, если это решит вашу проблему.