Как получить массив данных для отображения в html-шаблоне в Angular ngOnInit

#html #node.js #angular #http #router

Вопрос:

Я пытаюсь извлечь информацию из бэкенда и показать ее в угловых компонентах. Но я сначала извлекаю его в ngOnInit перед рендерингом, но он показывает мне ошибку в angular. Это мой файл component.ts

 import { Component, OnInit } from '@angular/core'; import { UserService } from '../shared/user.service'; import { Router } from '@angular/router';  @Component({  selector: 'app-home',  templateUrl: './home.component.html',  styleUrls: ['./home.component.css'] }) export class HomeComponent implements OnInit {   constructor( private userService: UserService, private router: Router) { }   userDetails = [];   ngOnInit(): void {  this.userService.getUserProfile().subscribe(  (res:any)=gt;{  this.userDetails = res['user'];  },  err=gt;{}  );  }   onLogout(){  this.userService.deleteToken();  this.router.navigate(['/login']);  }  }  

Это мое component.html файл

 lt;table #ngIf="userDetails" class="table-fill"gt;  lt;theadgt;  lt;trgt;  lt;th colspan="2" class="text-center"gt;  User Profile  lt;/thgt;  lt;/trgt;  lt;/theadgt;  lt;tbodygt;  lt;trgt;  lt;tdgt;First Namelt;/tdgt;  lt;tdgt;{{userDetails.name}}lt;/tdgt;  lt;/trgt;  lt;trgt;  lt;tdgt;Emaillt;/tdgt;  lt;tdgt;{{userDetails.email}}lt;/tdgt;  lt;/trgt;  lt;trgt;  lt;td colspan="2" class="text-center"gt;  lt;input type="button" (click)="onLogout()" value="Logout"gt;  lt;/tdgt;  lt;/trgt;  lt;/tbodygt; lt;/tablegt;  

Это ошибка, которую я получаю

 Error: src/app/home/home.component.html:1:15 - error NG8003: No directive found with exportAs 'userDetails'.  1 lt;table #ngIf="userDetails" class="table-fill"gt;  ~~~~~~~~~~~   src/app/home/home.component.ts:7:16  7 templateUrl: './home.component.html',  ~~~~~~~~~~~~~~~~~~~~~~~  Error occurs in the template of component HomeComponent.   Error: src/app/home/home.component.html:12:31 - error TS2339: Property 'name' does not exist on type 'never[]'.  12 lt;tdgt;{{userDetails.name}}lt;/tdgt;  ~~~~   src/app/home/home.component.ts:7:16  7 templateUrl: './home.component.html',  ~~~~~~~~~~~~~~~~~~~~~~~  Error occurs in the template of component HomeComponent.   Error: src/app/home/home.component.html:16:31 - error TS2339: Property 'email' does not exist on type 'never[]'.  16 lt;tdgt;{{userDetails.email}}lt;/tdgt;  ~~~~~   src/app/home/home.component.ts:7:16  7 templateUrl: './home.component.html',  ~~~~~~~~~~~~~~~~~~~~~~~  Error occurs in the template of component HomeComponent.  

Помоги мне. Я много пробовал, но это не работает

Комментарии:

1. Это должно быть *ngIf=»Данные пользователя», А НЕ #ngIf=»Данные пользователя», замените # на *

2. Я заменил его, но все равно он показывает мне, что свойство » имя «ошибки не существует в типе» никогда [] » как для имени, так и для электронной почты

3. Если вы получаете доступ userDetails.name, это означает, что UserDetails не является массивом. Тогда, пожалуйста, не определяйте его как массив, определите его UserDetails; ИЛИ UserDetails = «»; И проверьте *ngIf=»userDetails.name» в html

Ответ №1:

вы получаете доступ к учетным записям пользователей в качестве Object.So, заменить

 userDetails = [] as userDetails:any;