JSON с именем Зеро

Я делаю http-запрос на сервер JSON и помещаю значение в переменную, когда я делаю console.info(), он показывает мне всю информацию из json, но когда я пытаюсь использовать интерполяцию, чтобы передать информацию в шаблон , мне выдает эту ошибку

ERROR TypeError: Cannot read property 'numero' of undefined

A отметил, что json имеет ноль на своем имени, как я могу это решить?

Мой сервис:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

import { API } from '../../../app.api';


@Injectable({
  providedIn: 'root'
})
export class TarefadetalheService {

  constructor(private http: HttpClient) { }

  recuperaDetalhes(): any{
    return this.http.get("http://localhost:4000/tarefadetalhe")

 }
}

Вот моя страница, которая вызывает службу:

import { Component, OnInit } from '@angular/core';
import { NavParams } from '@ionic/angular';
import { TarefadetalheService } from './tarefadetalhe.service';
import { Tarefa } from '../../models/tarefa.model';

@Component({
  selector: 'app-tarefas-detalhe',
  templateUrl: './tarefas-detalhe.page.html',
  styleUrls: ['./tarefas-detalhe.page.scss'],
})
export class TarefasDetalhePage implements OnInit {
 idTarefa = null
 tarefa: any
  constructor(private navParams: NavParams, private getTarefaDetalhe: TarefadetalheService) { }

  ngOnInit() {
    this.idTarefa = this.navParams.get('id_tarefa');
    this.getTarefaDetalhe.recuperaDetalhes().subscribe((data)=>{
      this.tarefa = data[0] //now it works 
    })
  }
}

Вот мой шаблон:

<ion-header>
  <ion-toolbar>
    <ion-title>{{tarefa.numero}}</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content padding>
ID da tarefa é: {{idTarefa}}
</ion-content>

Как видите, теперь я могу отображать данные так, как хотел, но это постоянно выдает ошибку, я просто попытался запустить ionic serve еще раз, и никакого эффекта. JSON с именем Зеро

Я пытался сделать {{tarefa[0].numero}}, но таким образом он даже не показывает мне данные в шаблоне.

Это массив, tarefa[0].numero должен работать нормально

Luca Kiebel 06.03.2019 17:04

Смотрите ответ здесь: stackoverflow.com/questions/38544503/…

jwatts1980 06.03.2019 17:05

Возможный дубликат Доступ к определенному элементу массива в шаблоне Angular2

Luca Kiebel 06.03.2019 17:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
117
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как насчет захвата индекса json, как показано ниже:

this.tarefa = data[0] 
console.info(this.tarefa)//Here I can show the data

и тогда {{tarefa.numero}} должно работать на вас.

Теперь данные рендерятся, но продолжают выдавать ошибку, как видите... Я отредактировал вопрос

Tiago Silveira 06.03.2019 17:38

Как уже говорили другие, this.tarefa - это массив, объект со всеми данными, которые вам нужны, находится в первом элементе массива.

Либо доступ к нему через

this.tarefa[0].numero

или когда вы извлекаете данные и сохраняете их в переменной tarefa, просто сохраняйте 1-й (и единственный) элемент массива.

this.tarefa = data[0]

Второе предложение сработало для меня, и шаблон теперь в порядке, но консоль продолжает выдавать мне ошибку, и я не знаю, почему :/

Tiago Silveira 06.03.2019 17:40

вы должны вызывать tarefa.numero до того, как запрос на получение к API будет фактически завершен.

GifCo 06.03.2019 18:06

Итак, я должен сделать Async и ждать ?? Я знаю, что он делает, но я не знаю, как реализовать, не могли бы вы мне помочь?

Tiago Silveira 06.03.2019 18:13

Извините, я не очень хорошо знаю Angular. Вам не нужно использовать асинхронное ожидание, но вам нужно указать Angular НЕ загружать шаблон до тех пор, пока данные не будут фактически получены.

GifCo 06.03.2019 18:19

Проверьте этот вопрос stackoverflow.com/questions/44900769/…

GifCo 06.03.2019 18:20

@TiagoSilveira хахаха, это круто!

GifCo 06.03.2019 18:33

Другие вопросы по теме