Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

156
Views
Making template display data on load

I'm trying to make my template display data from the component when it is loaded. I have tried using the *ngIf condition set to object that is being loaded in itself.

So like this:

<table>
    <tbody *ngIf="country">
        <tr>
            <td>{{country.name}}</td>
            <td>{{country.population}}</td>
            <td>{{country.area}}</td>
            <td>{{country.language}}</td>
        </tr>
    </tbody>
</table>

However, nothing is being displayed on the page. This is what my component looks like:

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { BackendService } from 'src/app/backend.service';
import { ICountry } from '../interfaces/country';

@Component({
  selector: 'app-countrydetails',
  templateUrl: './countrydetails.component.html',
  styleUrls: ['./countrydetails.component.css']
})
export class CountrydetailsComponent implements OnInit {

  public country: ICountry;

  constructor(private _backendService: BackendService, private router: Router) { }

  ngOnInit(): void {
    this.getCountry(this.router.url.replace('/',''));
  }

  getCountry(country: string): void {
    this._backendService.getCountry(country).subscribe(data => {
      this.country = data;
      console.log(data);
    });
  }
}

What should I do to make the template display my data when the object is no longer undefined?

{{country|json}}

{ "country": { "name": "Russia", "capital": "Moscow", "language": "Russian", "population": "144526636", "density": "8.4", "area": "3969100", "majorCities": [ { "name": "Moscow", "population": "12506468", "area": "2562", "rank": "1" }, { "name": "Saint Petersburg", "population": "5351935", "area": "1439", "rank": "2" }, { "name": "Novosibirsk", "population": "1473754", "area": "503", "rank": "3" } ] } }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You should store in country an observable of your BackendService.

public country: Observable<ICountry>;

ngOnInit() {
  this.country = this.getCountry(...);
}

getCountry(country: String): Observable<ICountry> {
  return this._backendService.getCountry(country);
}

And then, in your HTML component

<tbody *ngIf="country | async as country">
    <tr>
        <td>{{country.name}}</td>
        <td>{{country.population}}</td>
        <td>{{country.area}}</td>
        <td>{{country.language}}</td>
    </tr>
</tbody>
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!