我使用了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:无法读取未定义的属性“作者”
出什么问题了?
谢谢您的建议。
答案 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: { }
}