我有一个明确定义的模型,用这种方式编写:
export class Navigation {
line: {
_id: string;
code: string;
name: string;
isVia: boolean;
_operator: {
_id: string;
name: string;
};
via: {
_id: string;
name: string;
}
};
hour: string;
destiny: string;
}
在某个页面上,我在构造函数之前从变量开始,然后我这样做:
public navigation: Navigation = new Navigation ();
我在constructor
的下方:
this.navigation.destiny = 'center';
this.navigation.line.isVia = false;
this.navigation.line.via.name = 'No path to this line';
我可以访问hour
和destiny
属性但是示例行的属性不起作用。在我的控制台上出现以下错误:
错误错误:未捕获(承诺):TypeError:无法设置属性' isVia'未定义的 TypeError:无法设置属性' isVia'未定义的
我需要使用模型数据。
可以做什么以及如何安排?
ATTEMPTS
这两种情况都会出现同样的错误。
SCENARIO
我在ionic 2
开发,基本上它适用于angular 4
并使用typescript
作为语言。当我在'离子4'中创建页面时它会在(.html
,.ts
,.scss
,.modeule.ts
中生成文件,.ts
文件会控制我的网页,其中我可以轻松操作所有html
文件1}},向服务器发出请求并在运行时轻松更改屏幕。为了更好的开发,我使用models
的概念来标准化我的内容,包括发送时的接收和接收,基于此,我收到/发送的所有内容都具有model
的公式。该模型是一个单独的文件,以防我在我的页面的.ts
中以其总体形式(即每个文件)表示我实例化我的模型,说我的navigation
变量将采用我的模板Navigation
的形式在我的构造函数添加了一个值之后不久,因为我告诉你在我的html中使用它。此刻我正在尝试在这个问题中表达的错误。
为了重现错误,有必要使用complex
model
,也就是说它有对象对象,可以在我的观察中看到我有值root(destiny
,hour
)和此对象中的line
对象我有其他对象,我无法从line
访问此对象,也无法访问其中的任何内容。
答案 0 :(得分:1)
如果要设置任何行属性,则应首先在定义类中指定行属性。最初new Navigation()
line
属性为undefined
之后。所以你必须在它上面设置一些东西。之后你可以使用line
export class Navigation {
line: {
_id: string;
code: string;
name: string;
isVia: boolean;
_operator: {
_id: string;
name: string;
};
via: {
_id: string;
name: string;
}
} = {via: {}, _operator: {}};
hour: string;
destiny: string;
}
或
var nav = new Navigation();
nav.line = {isVia = false, via: {...}};
答案 1 :(得分:1)
您的模型未初始化。将模型更改为:
export class Navigation {
line:any= {
_id: undefined,
code: undefined,
name: undefined,
isVia: undefined,
_operator: {
_id: undefined,
name: undefined,
},
via: {
_id: undefined,
name: undefined,
}
};
hour: undefined;
destiny: undefined;
}
答案 2 :(得分:1)
由于line
是一个对象,当你构造undefined
时它是Navigation
,你必须像那样初始化它,然后将值放在isVia
中:
this.navigation.destiny = 'center';
this.navigation.line = {};
this.navigation.line.isVia = false;
this.navigation.line.via = {};
this.navigation.line.via.name = 'No path to this line';
希望有所帮助