Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在类中使用构造函数的类型脚本赢得';不允许使用新关键字_Angular_Typescript_Constructor - Fatal编程技术网

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
    ) { }
}