我在后端有一对一的关系,在Angular中,我有两个模型:Child
和ChildPermission
都是独立的无扩展名。
我想在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')
答案 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