Angular 在类中使用构造函数的类型脚本赢得';不允许使用新关键字
我希望能够更新我的菜单类,但在使用构造函数时我不能,这是为什么Angular 在类中使用构造函数的类型脚本赢得';不允许使用新关键字,angular,typescript,constructor,Angular,Typescript,Constructor,我希望能够更新我的菜单类,但在使用构造函数时我不能,这是为什么 model = new Menu(); 这样我就可以设置每个属性 this.model.AppGroupID = UserID; 组成部分: import { Menu } from '../../models/menu-model'; model = new Menu(); let UserID = params['UserID']; this.model.AppGroupID = UserID; 当不使用构造函数时,上
model = new Menu();
这样我就可以设置每个属性
this.model.AppGroupID = UserID;
组成部分:
import { Menu } from '../../models/menu-model';
model = new Menu();
let UserID = params['UserID'];
this.model.AppGroupID = UserID;
当不使用构造函数时,上述方法可以正常工作
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
) { }
}
我认为你混淆了几个不同的概念 这: 与此基本相同:
export class Menu {
constructor(
) { }
UserID: number;
AppID: number;
NavAppID: number;
AppGroupID: number;
SelectedCaseID: number;
SelectedRoleID: number;
}
i、 如果你不指定一个构造函数,它基本上和一个空构造函数是一样的(我说基本上是因为如果你扩展了一个基类,它会稍微有所不同)
然而,这:
export class Menu {
constructor(
public UserID: number,
public AppID: number,
public NavAppID: number,
public AppGroupID: number,
public SelectedCaseID: number,
public SelectedRoleID: number
) { }
}
这是不同的。如果使用参数定义构造函数,则需要在调用构造函数时为这些参数提供参数 因为您将构造函数参数声明为“public”,这也使它们成为类的属性 这也许就是令人困惑的地方?您不需要在构造函数中创建这些属性,这只是一个方便的简写
如果不想在构造函数调用中指定参数,请不要将其作为构造函数的参数,而是直接在类主体中声明它们,如第一个示例所示。如果使用参数定义构造函数,则在调用构造函数时需要为这些参数提供参数?是否尝试读取错误消息?我是否无法执行
model=new Menu()代码>与具有public的构造函数?那么我如何设置这些属性this.model.AppGroupID=UserID代码>?是,您不能执行model=新建菜单()。您可以直接设置属性。不要把拥有构造函数和拥有公共构造函数参数混为一谈——它们是两件截然不同的事情。你可以有一个没有另一个。
export class Menu {
constructor(
public UserID: number,
public AppID: number,
public NavAppID: number,
public AppGroupID: number,
public SelectedCaseID: number,
public SelectedRoleID: number
) { }
}