角。类作为其他类的方法

时间:2018-04-02 06:31:49

标签: angular typescript

我是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,但我想在一个对象中创建它。

3 个答案:

答案 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"
   }
  ]
}];