我有一个模型“Profesional”,它的属性是另一个模型“Address”:
'use strict';
import * as Address from './models/address';
export interface Profesional {
id?: number;
name?: string;
address?: Address;
}
和另一个模型:
'use strict';
export interface Adress{
id?: number;
name?: string;
}
我遇到的问题是在使用 Profesionals 实例的组件中:
<input type="text" [(ngModel)]="profesional.name">
<input [(ngModel)]="profesional.address.id" class="form-control">
当我从数据库获取 profesional 的实例(保存在名为 profesional 的变量中)时,属性名称将使用对象的值进行设置。但该地址给了我一个错误:
异常:错误:未捕获( promise 中):异常:./CreateProfetional 类 CreateProfetional 中出现错误 - 内联模板:48:59 原始异常:TypeError:无法读取未定义的属性“id” ts 只是有获取专业实例的方法:
import { Component, OnInit } from '@angular/core';
import { DefaultApi } from '../../../api/api/DefaultApi';
import {Profesional} from '../../../api/model/Profetional';
import {Address} from '../../../api/model/Address';
declare var $: any;
@Component({
selector: 'profesionales',
styles: [require('./profesionales.component.css').toString()],
template: require('./profesionales.component.html'),
providers: [DefaultApi]
})
export class CrearEditarProfesionalesComponent {
profesional: Profesional = {};
ngOnInit() {
this.onGet(1);
};
onGet = (id: number) => {
this._apiDentos.findProfesionalById(id.toString())
.subscribe(res => {
this.profesional = res
},
console.error);
};
}
如何实例化这个对象属性“profesional.adress”?这是可能的,或者我必须创建一个简单的变量,然后为其分配属性值?这样做的正确方法是什么?
这是 json:
{
"id":1,
"name":"1",
"address":{
"id":1,
"name":"fsda"
}
}
最佳答案
首先,请注意,在您的 Professional 界面中,地址类型应从字符串更改为地址。现在,您至少需要初始化子对象,这样就不会出现异常:
profesional: Profesional = <Profesional>{ 'address' : {} };
更好的选择是初始化所有属性,但这取决于域。
关于javascript - 实例化子对象(对象内的对象)Angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39195402/