我是Angular2的初学者并且遇到了一些问题。我创建了一个组件 info 。在 info.component.ts 中,我按如下方式初始化对象:
import { Comm } from '../shared/comments';
...
const VASACOM: Comm = {
name: 'Vasa',
id: 122,
comments: [
{
rating: 5,
comment: "Some commment",
date: "2012-10-16T17:57:28.556094Z"
},
{
rating: 4,
comment: "Other comment",
date: "2014-09-05T17:57:28.556094Z"
}
]
};
comments.ts 中的Comm课程:
export class Comm {
name: string;
id: number;
comments: Comment[];
constructor(name:string,id:number,comments:Comment[]){
this.name = name;
this.id = id;
this.comments = comments;
}
}
export class Comment {
rating: number;
comment: string;
date: string;
}
我收到错误:
错误TS2322:对象文字只能指定已知属性和'注释'在' Comm'
类型中不存在
我做错了什么?
P.S。我知道我们可以分别创建2个对象,其中一个是Comm类,另一个是Comment,但我想在一个对象中创建它。
答案 0 :(得分:0)
尝试重新启动服务器。我认为这可以解决你的问题。
答案 1 :(得分:0)
您可以使用Comm类和Comments类的构造函数。
export class Comm {
constructor(
public name: string,
public id: number,
public comments: Comment[]
){}
}
export class Comment {
constructor(
public rating: number,
public comment: string,
public date: string
){}
}
答案 2 :(得分:0)
您可以将这些类作为接口
export interface Comm {
name: stirng;
id: number;
comments: Comment[];
}
export interface Comment {
rating: number;
comment: string;
date: string;
}
在服务的帮助下,您可以获得如下值:
@Injectable()
export class Items {
getAll(): Comm[] {
return VASACOM;
}
它应该像
const VASACOM: Comm = [{
name: 'Vasa',
id: 122,
comments: [
{
rating: 5,
comment: "Some commment",
date: "2012-10-16T17:57:28.556094Z"
},
{
rating: 4,
comment: "Other comment",
date: "2014-09-05T17:57:28.556094Z"
}
]
}];