属性X在类型Y上不存在

时间:2017-05-11 08:08:48

标签: angular typescript

我收到了这个错误:

  

财产'模块'类型'菜单'。

上不存在      

Property' parentId'类型'菜单'。

上不存在

代码如下:

private menus: Menu[];


for (var i = 0; i < this.menus.length; i++) {
            if ((this.currRoute == "/" + this.ls.actLan + this.menus[i].module) && this.menus[i].parentId !== 0) {
                this.IsActive.emit(this.menus[i].parentId);
            } else {
                this.IsActive.emit(0);
            }
        }

但是我已导入该ts文件

import { Menu } from './menu';

我有这些属性

export class Menu {
    constructor(
        id: number,
        type: number,
        module: any,
        urlType: string,
        url: string,
        name: string,
        parentId: any
    ) { }
}

可能出错?

2 个答案:

答案 0 :(得分:3)

你实际上在Menu课程上没有任何属性。您可以从构造函数参数自动创建属性。见parameter properties

export class Menu {
    constructor(
        public id: number,
        public type: number,
        public module: any,
        public urlType: string,
        public url: string,
        public name: string,
        public parentId: any
    ) { }
}

现在所有参数也都是Menu的公共属性。

或者,如果您不想使用参数属性,可以像这样逐个定义它们:

export class Menu {
    id: number;
    // ...
    constructor(id: number, type: number, module: any, url: string, name: string, parentId: any) {
        this.id = id;
        // ...
    }
}

答案 1 :(得分:0)

像这样改变,

export class Menu {

    id: number;
    type: number;
    module: any;
    urlType: string;
    url: string;
    name: string;
    parentId: any;
    constructor(id: number, type: number, module: any, url: string, name: string, parentId: any) {
        this.id = id;
        this.module = module;
        this.type = type;
        this.url = url;
        this.name = name;
        this.parentId = parentId;
    }
}