Javascript Angular类实例正在生产构建中提供对象实例
我使用的是角度8 在应用程序中,我有一个对象数组,用于在HTML中相应地呈现数据Javascript Angular类实例正在生产构建中提供对象实例,javascript,angular,typescript,angular8,Javascript,Angular,Typescript,Angular8,我使用的是角度8 在应用程序中,我有一个对象数组,用于在HTML中相应地呈现数据 public components = [ { type: "button", data: { label: "Click here" } }, { type: "description_box", data: { content: "Enter description&
public components = [
{
type: "button",
data: {
label: "Click here"
}
},
{
type: "description_box",
data: {
content: "Enter description"
}
}
]
现在有两个按钮添加按钮和添加描述框当用户单击按钮时,请求的对象被推送到组件
数组中,该数组的处理方式与
onClick(component: string) {
switch(component) {
case 'button': data = new Button(); break;
case 'description_box': data = new DescriptionBox(); break;
}
this.components.push({
type: this.getTypeFromData(data),
data: data
}
/**
* spit class constructor name in lowercase underscored
* Ex: DescriptionBox -> description_box
*/
private getTypeFromData(data) {
const className = data.constructor.name.split(/(?=[A-Z])/);
let componentType = '';
for (const name of className) {
componentType += name + '_';
}
return componentType.toLowerCase().slice(0, -1);
}
这两个班是一样的
components.ts
export class Button {
label: string;
color: {
label: string;
button: string;
border: string;
};
link: string;
}
export class DescriptionBox {
text = 'New Title';
}
这在本地开发中效果很好,但在生产构建中效果不如预期
在生产构建中,类实例给出的是
o
对象而不是类实例。这是因为您的类被缩小了,所以占用的空间更少。i不必检查构造函数。name您可以用数据实例of description Box来检查它。这是因为您的类被缩小了,所以占用的空间更少。i除了检查constructor.name
之外,您可以用描述框的数据实例来检查它。另外按钮的实例是空对象o{}
而对于描述框,它是o{text:“New Title”
。这是因为按钮
类属性未初始化吗?否,该类已重命名为较短版本。将其命名为o
如果我使用数据实例of DescriptionBox
,它将返回布尔值,因此我必须为每个实例检查编写多个If-else
语句。我进行了测试,上面的工作用于布尔检查。但是在getTypeFromData
方法中,我从实例类型生成名称。有没有办法将instanceof name作为字符串获取?类名在缩小过程中丢失。如果你想要一些字符串,你可以尝试一些类似于class Button{static name='Button';…}
的方法,然后找到这个字符串,比如const str=[Button,Box,Anyting]。find(cl=>data instanceof cl)。name
另外Button
类的实例是空对象o{}
,而对于描述框,它是o{text:“新标题”}
。这是因为按钮
类属性未初始化吗?否,该类已重命名为较短版本。将其命名为o
如果我使用数据实例of DescriptionBox
,它将返回布尔值,因此我必须为每个实例检查编写多个If-else
语句。我进行了测试,上面的工作用于布尔检查。但是在getTypeFromData
方法中,我从实例类型生成名称。有没有办法将instanceof name作为字符串获取?类名在缩小过程中丢失。如果您想拥有一些字符串,可以尝试类似于类按钮{static name='Button';…}
的方法,然后找到类似于const str=[Button,Box,Anyting]的字符串。查找(cl=>cl的数据实例)。name