'object'不包含这样的成员Angular 5

时间:2018-03-09 06:01:25

标签: javascript typescript angular5

我是Angular的新手并尝试制作一个小应用程序。

我提到'object' does not contain such a member 回答,但我没有从那里得到我的解决方案。

profile.component.ts

import { Component, OnInit } from '@angular/core';
import { AuthService } from '../../services/auth.service';
import { Router } from '@angular/router';

@Component({
  selector: 'app-profile',
  templateUrl: './profile.component.html',
  styleUrls: ['./profile.component.css']
})
export class ProfileComponent implements OnInit {
  user: Object;
  constructor(private authService: AuthService, private roter: Router) {}

  ngOnInit() {
    this.authService.getProfile().subscribe(
      profile => {
        this.user = profile.user;
      },
      err => {
        console.log(err);
        return false;
      }
    );
  }
}

profile.component.html

<div *ngIf="user">
  <h2 class="page-header">
    {{ user.name }}
  </h2>
  <ul class="list-group">
    <li class="list-group-item">
      Username: {{ user.username }}
    </li>
    <li class="list-group-item">
      Email: {{ user.email }}
    </li>
  </ul>
</div>

Visual Studio代码显示了这一点 的错误:

  

[Angular]标识符“用户名”未定义。 '对象'不包含这样的成员

     

ProfileComponent的属性用户

4 个答案:

答案 0 :(得分:1)

您已在user类中将ProfileComponent定义为Object type.wich没有定义Typescript Model。因此,Typescript不知道User的结构宾语。  所以你创建了这样的模型。

interface User{
    username : String;
    password: ...
    ....
  }  

然后将其用作类似user : User

的类型

问题将会解决。

答案 1 :(得分:1)

要么改变

user: Object; 

通过

user: any;

在你的profile.component.ts中肯定会有效,因为最初你已经将它声明为对象,所以在运行或构建应用程序时,由于访问为user.username而导致编译失败。 要么将类型更改为任何,要么创建具有必需属性的接口或类型,并将此类型分配给用户 例如: profile.component.ts:

interface userObject {
  username:string,
  password:string
} 

方式访问
export class ProfileComponent implements OnInit {
   user : userObject;
}

答案 2 :(得分:1)

定义对象时,它没有firstName或lastName。所以当从ui访问它时会显示错误。所以首先初始化如下所示。然后问题就会解决。

让user = {firstName:“”,lastName:“”};

代码:

public function create()
    {
         //print_r($_POST);
         $role_name=$_POST['name'];
         $create_product=NULL;
         $edit_product=NULL;
         $view_product=NULL;

          if(isset($_POST['create_products']))
         {
            $create_product=$_POST['create_products'];
         }
         if(isset($_POST['view_products']))
         {
            $view_product=$_POST['view_products'];
         }
          if(isset($_POST['edit_products']))
         {
            $edit_product=$_POST['edit_products'];
         }
         echo $create_product; echo $view_product; echo $edit_product;

         dd(Role::findByName($role_name));

答案 3 :(得分:0)

Object指的是内置对象构造函数,它显然没有属性username。由于您要将user的类型设置为Object并尝试访问不存在的属性username,因此显示错误。

如果您想定义自己的类型,请参阅this