Tarun Surana Ответов: 1

Как решить проблему ошибки типа, когда данные являются нулевыми в ngif?


Если данные сохраняются во всех разделах Api, так что не получите никакой ошибки типа, если какой-либо раздел равен нулю, так дайте мне ошибку типа.

Я поделюсь с вами кодом

это файл компонента html.
<div *ngIf="SingleCountryData" class="card">
                <div class="card-body">
                    Latitude & Longitude:-<p class="card-text">{{SingleCountryData[0].latlng}}</p>
                    Calling Codes:-<p class="card-text">{{SingleCountryData[0].callingCodes}}</p>
                    Alt Spellings:-<p class="card-text">{{SingleCountryData[0].altSpellings}}</p>
                    Demonym:-<p class="card-text">{{SingleCountryData[0].demonym}}</p>
                    Gini:-<p class="card-text">{{SingleCountryData[0].gini}}</p>
                    Border:-<p class="card-text">{{SingleCountryData[0].borders}}</p>
                </div>
            </div>
        </div>
        <div class="col-md-6">
            <div class="card">
                <div class="card-body">
                    Currency:-
                    <p *ngIf="SingleCountryData" class="card-text">
                        Code:-<span><a [routerLink]="['/region/countries',SingleCountryData[0].region, SingleCountryData[0].name, SingleCountryData[0].currencies[0].code]">{{SingleCountryData[0].currencies[0].code}}</a></span><br>
                        Name:-<span>{{SingleCountryData[0].currencies[0].name}}</span><br>
                        Symbol:-<span>{{SingleCountryData[0].currencies[0].symbol}}</span><br>
                    </p>
                    Languages:-
                    <p  *ngIf="SingleCountryData" class="card-text">
                        iso639_1:-<span> {{SingleCountryData[0].languages[0].iso639_1}}</span><br>
                        iso639_2:-<span> {{SingleCountryData[0].languages[0].iso639_2}}</span><br>
                        Name:-<span> {{SingleCountryData[0].languages[0].name}}</span><br>
                        NativeName:-<span> {{SingleCountryData[0].languages[0].nativeName}}</span><br>
                        <br>
                        iso639_1:-<span>{{SingleCountryData[0].languages[1].iso639_1}}</span><br>
                        iso639_2:-<span>{{SingleCountryData[0].languages[1].iso639_2}}</span><br>
                        Name:-<span>{{SingleCountryData[0].languages[1].name}}</span><br>
                        NativeName:-<span>{{SingleCountryData[0].languages[1].nativeName}}</span>
                    </p>
                    Translations:-
                    <p *ngIf="SingleCountryData" class="card-text">
                        <span>de:-{{SingleCountryData[0].translations.de}}</span><br>
                        <span>es:- {{SingleCountryData[0].translations.es}}</span><br>
                        <span>fr:- {{SingleCountryData[0].translations.fr}}</span><br>
                        <span>ja:- {{SingleCountryData[0].translations.ja}}</span><br>
                        <span>it:- {{SingleCountryData[0].translations.it}}</span><br>
                        <span>br:- {{SingleCountryData[0].translations.br}}</span><br>
                        <span>pt:- {{SingleCountryData[0].translations.pt}}</span><br>
                        <span>nl:- {{SingleCountryData[0].translations.nl}}</span><br>
                        <span>hr:- {{SingleCountryData[0].translations.hr}}</span><br>
                        <span>fa:- {{SingleCountryData[0].translations.fa}}</span><br>
                    </p>
                    RegionBlocs:-
                    <p *ngIf="SingleCountryData" class="card-text">
                        <span>Acronym:-{{SingleCountryData[0].regionalBlocs[0].acronym}}</span><br>
                        <span>Name:-{{SingleCountryData[0].regionalBlocs[0].name}}</span><br>
                        <span>Other Acronyms:-{{SingleCountryData[0].regionalBlocs[0].otherAcronyms}}</span><br>
                        <span>Other Names:-{{SingleCountryData[0].regionalBlocs[0].otherNames}}</span>
                    </p>
                    Cioc:- 
                    <p *ngIf="SingleCountryData" class="card-text">{{SingleCountryData[0].cioc}}</p>
                </div>
            </div>
        </div>
    </div>
</div>


это файл ts..
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { CountryHttpService } from '../country-http.service';

@Component({
  selector: 'app-single-country-view',
  templateUrl: './single-country-view.component.html',
  styleUrls: ['./single-country-view.component.css']
})
export class SingleCountryViewComponent implements OnInit {
  SingleCountryData: any;

  constructor(private httpservice: CountryHttpService, private _route: ActivatedRoute, private router: Router, private http: HttpClient) { }

  ngOnInit() {
    let cName = this._route.snapshot.paramMap.get('name');
    console.log(cName);

    this.httpservice.getSingleCountry(cName).subscribe(
      (result)=>{
            this.SingleCountryData = result;
            console.log("Get Single Country Data",this.SingleCountryData);
    },
    error => {
      console.log("some error occured");
      console.log(error.errorMessage)
    })
  }

}


Я поделился snapsot выходного экрана

Скриншот (194).png - Google Диск[^]

Что я уже пробовал:

Я пытался показать все данные не приходят какие-либо ошибки, если данных нет в API, которые показывают нуль на есть пустое пространство..

Richard MacCutchan

Затем вам нужно проверить, какие данные вы получаете. Является ли он действительным или нулевым?

Tarun Surana

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

Richard MacCutchan

Какие данные? Вам действительно нужно объяснить, где в вашем коде возникает эта проблема, и какой элемент является нулевым, и при каких условиях. Мы не можем запустить ваш код, чтобы выяснить это.

Tarun Surana

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

Tarun Surana

У меня есть еще один вопрос, и я уже разместил его на вашем сайте.

1 Ответов

Рейтинг:
1

Pete O'Hanlon

Для тех, кто сталкивается с проблемой, подобной этой, причина, по которой привязки здесь терпят неудачу, заключается в том, что существует предположение, что на самом деле существует значение в элементе 0 массива. Если массив равен нулю, то очевидно, что не может быть элемента 0. Способ обойти это состоит в том, чтобы добавить проверку на нулевой элемент вот так

Latitude & Longitude:-{{SingleCountryData && SingleCountryData[0].latlng}}
Альтернативой было бы обернуть текстовую часть внутрь чего-то вроде промежутка и использовать *ngIf контролировать его оценку.