如何在另一个模型类中实例化模型类?

时间:2018-02-16 15:25:30

标签: typescript

我在后端有一对一的关系,在Angular中,我有两个模型:ChildChildPermission都是独立的无扩展名。

我想在ChildPermission模型中实例化Child模型,但是它给出了一个未定义的错误。

儿童班:

import {ChildPermission} from './childpermission';
export interface Child {

  id: number;
  class_id: number;
  f_name: string;
  l_name: string;
  permission: ChildPermission;
}

ChildPermission:

export interface ChildPermission {

  id: number;
  walking: boolean;
  biking: boolean;
  player_water: boolean;
  go_parks: boolean;
  go_fields: boolean;
  using_photos: boolean;
}

在组件中我尝试了以下内容:

export class ChildAddComponent implements OnInit {

  child: Child = {} as Child;

  constructor() {

  }

  ngOnInit() {
    this.child.permission.walking = true;
    console.log(this.child);
  }

}

但它在控制台中返回以下内容:

  

TypeError:undefined不是对象(评估   'this.child.permission.walking = true')

2 个答案:

答案 0 :(得分:1)

如果使用接口方法,则需要分配以下所有必需属性:

child: Child = {
    id: 1,
    class_id: 1,
    ...
    permission: {
        id: 1,
        walking: false,
        ...
    }
}

如果您将其切换为类方法,请按以下方式进行操作。

child = new Child();

在Child类中,启动这样的权限。

permission = new ChildPermission();

您可以参考许多资源来了解有关TypeScript中接口和类之间差异的更多信息。 例如https://toddmotto.com/classes-vs-interfaces-in-typescript

答案 1 :(得分:-1)

permission字段中未定义属性child: Child。您需要像这样启动它:

this.child.permission = {
  id: 1;
  walking: true;
  biking: false;
  player_water: false;
  go_parks: false;
  go_fields: false;
  using_photos: false;
}

this.child.permission = getChildPermission(),其中getChildPermission()返回ChildPermission对象。 之后,您可以更改this.user.permission

中的属性