我希望能够新建我的菜单类但是在使用构造函数时我不能这样做,为什么会这样?
model = new Menu();
这样我就可以设置每个属性
this.model.AppGroupID = UserID;
成分:
import { Menu } from '../../models/menu-model';
model = new Menu();
let UserID = params['UserID'];
this.model.AppGroupID = UserID;
当不使用构造函数
时,ABOVE工作正常menu-model.ts文件
export class Menu {
UserID: number;
AppID: number;
NavAppID: number;
AppGroupID: number;
SelectedCaseID: number;
SelectedRoleID: number;
}
所以上面的工作正常 但为什么以及如何使用构造函数呢?任何好处?
export class Menu {
constructor(
public UserID: number,
public AppID: number,
public NavAppID: number,
public AppGroupID: number,
public SelectedCaseID: number,
public SelectedRoleID: number
) { }
}
答案 0 :(得分:2)
我认为你会混淆几个不同的概念。
此:
export class Menu {
UserID: number;
AppID: number;
NavAppID: number;
AppGroupID: number;
SelectedCaseID: number;
SelectedRoleID: number;
}
与此基本相同:
export class Menu {
constructor(
) { }
UserID: number;
AppID: number;
NavAppID: number;
AppGroupID: number;
SelectedCaseID: number;
SelectedRoleID: number;
}
即。如果你没有指定一个构造函数,它基本上与一个空构造函数相同(我基本上说,如果你扩展一个基类,它会略有不同)。
但是这个:
export class Menu {
constructor(
public UserID: number,
public AppID: number,
public NavAppID: number,
public AppGroupID: number,
public SelectedCaseID: number,
public SelectedRoleID: number
) { }
}
不同。如果使用参数定义构造函数,则需要在调用构造函数时为这些参数提供参数。
因为您将构造函数参数声明为“public”,这也使它们成为类的属性。
这或许令人困惑?您不需要在构造函数中创建这些属性,这只是一种方便的简写。
如果不想在构造函数调用中指定参数,请不要将它们作为构造函数的参数,而是直接在类体中声明它们,如第一个示例所示。