#javascript #angular #typescript
#javascript #угловой #typescript
Вопрос:
Когда я присваиваю объект TypeScript ключу (temp) вложенного объекта JSON (main):
weatherToday : any;
getTheWeather(city : String)
{
console.log("HOME.TS: Getting the weather...");
this.weather.getWeather("Dublin").subscribe( data => {
this.weatherToday = data.main.temp;
});
}
А затем вывести объект weatherToday в home.html:
<p>{{weatherToday}}</p>
Результат соответствует ожидаемому:
284.73
Однако, когда я пытаюсь назначить Typescript общему родительскому объекту JSON:
this.weatherToday = data;
И затем попытайтесь вывести то же, что и выше, с помощью синтаксиса object.object.value в моем home.html:
<p>{{weatherToday.main.temp}}</p>
Я получаю исключение:
undefined не является объектом
Это структура JSON:
{
"coord": {
"lon": -121.94,
"lat": 37.7
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "clear sky",
"icon": "01d"
}
],
"base": "stations",
"main": {
"temp": 284.73,
"feels_like": 282.68,
"temp_min": 283.71,
"temp_max": 286.48,
"pressure": 1025,
"humidity": 62
},
"visibility": 10000,
"wind": {
"speed": 1.2,
"deg": 63
},
"clouds": {
"all": 1
},
"dt": 1608145061,
"sys": {
"type": 1,
"id": 4446,
"country": "US",
"sunrise": 1608131813,
"sunset": 1608166239
},
"timezone": -28800,
"id": 5344157,
"name": "Dublin",
"cod": 200
}
Поэтому я не совсем уверен, почему возникает это исключение.
Я использую Ionic v3.
Комментарии:
1. Вы уверены
weather.main.temp
, что существует для города"Dublin"
, а не использовать переданный в param ? Также можно сделать это в шаблоне<p>{{weatherToday?.main?.temp}}</p>
2. @Passersby, который работает, какой эффект имеет ‘?’?
3. Он не будет пытаться получить доступ к каким-либо более глубоким свойствам, если данный родительский элемент не определен / null
4. Я вижу, но если переменная существует для заданных родительских / дочерних элементов, что, по-видимому, имеет место в данном случае, почему она не будет работать без ‘?’
5. Я предполагаю, что произошла ошибка с привязкой. Может ли предоставить папку, в которой хранятся html и TS вместе с самими файлами? Я предполагаю, что мы просматриваем что-то небольшое.
Ответ №1:
this.weather.getWeather("Dublin").subscribe(data => {
this.weatherToday = data.main.temp;
});
<p>{{weatherToday}}</p>
Комментарии:
1. Это то, что я сделал в первой части вопроса