角度|无法读取未定义的属性“ XXX”

时间:2018-08-16 07:11:07

标签: angular typescript properties model

我使用了2个模型。ts

profile.model.ts

export interface Profile {
    username: string;
    nickname: string;
    image: string;
  }


'comment.model.ts'使用'profile.model.ts'。

comment.model.ts

import { Profile } from '.';

export interface Comment {
  author: Profile;
  content: string;
  creatat?: Date;
}


comment.component.ts

...
export class CommentComponent implements DoCheck {
  ...
  content: string;      // Get value from ngModel in comment.component.html
  comments: Comment;    // comment.model.ts
}
...

  addComment() {
    this.comments.author.nickname = 'Test Nickname';
    this.comments = {
      content: this.content
    };
    ...
  }


运行addComment()时,出现以下错误。

  

错误TypeError:无法读取未定义的属性“作者”

出什么问题了?

谢谢您的建议。

1 个答案:

答案 0 :(得分:1)

您需要初始化comments属性。目前,您只设置了它的类型-Comment

由于Profile的属性不是可选,因此您需要明确为其分配null

comments: Comment = { 
   author: {  
      username: null,
      nickname: null,
      image: null,
   }, 
   content: null 
}

或者您可以使它们成为可选属性,在属性名称之后添加?

export interface Profile {
    username?: string;
    nickname?: string;
    image?: string;
}

...

export interface Comment {
  author?: Profile;
  content?: string;
  creatat?: Date;
}

并像

一样初始化
comments: Comment = { 
   author: { } 
}