#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;