Я получаю этот тип ошибки при доступе к данным - PullRequest
0 голосов
/ 09 апреля 2020
    import { Component, OnInit } from "@angular/core";
    import { GetDataService } from "../../services/get-data.service";
    import { user } from "../../models/user";
    import { FormBuilder,FormGroup,Validators } from '@angular/forms';
    import { ActivatedRoute, Router } from "@angular/router";
    import { Subscription } from "rxjs";
    @Component({
      selector: "app-users-detail",
      templateUrl: "./users-detail.component.html",
      styleUrls: ["./users-detail.component.css"],
    })

export class UsersDetailComponent implements OnInit {
  users: user;
  private routeSub: Subscription;
  constructor(
    private route: ActivatedRoute,
    private getData: GetDataService,
    private router: Router
  ) {}

  ngOnInit(): void {
    this.getData
      .getDataById(this.route.snapshot.params.userId)
      .subscribe((data) => {
        this.users = data;

        console.log(this.users);
      });
  }
}

переменная this.data содержит JSON как

{id: 7, имя: "iam", адрес электронной почты: "roshan@gmail.com", страна: "asad", город: "asdasd ", телефон:" 1122 ",}

, но когда я пытаюсь получить доступ к users.name, я получаю" Не удается прочитать свойство 'name' из undefined "

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

замените users: user; на users = new user();

Таким образом, вы не получите сообщение об ошибке, но users.name все равно выдаст undefined, пока ему не будет присвоено какое-либо значение

0 голосов
/ 09 апреля 2020

Попробуйте использовать users.name так:

{{ users?.name }}

Это, вероятно, происходит потому, что вы пытаетесь получить к нему доступ до того, как он будет назначен. В приведенном выше ответе не так много неправильного, но присвоение значения заранее, используя new User (), не очень хорошая идея, почему вы хотите назначать значение снова и снова, когда его можно исправить только в представлении с помощью? Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...