【发布时间】:2018-07-23 08:43:15
【问题描述】:
使用 Angular 5。class.name 属性面临一个奇怪的问题。我们在打字稿中有以下功能:
export class ApiService
{
public list<T>(c: new(values: Object)=> T)
{
var cname = c.name;
....
}
}
现在,如果我在 Angular (ng-build) 的开发版本中使用此功能,如下所示:
export class Employee()
{
public id:string;
public name: string;
constructor(values: Object = {}) {
Object.assign(this, values);
}
}
在某处的代码中:
var list = api.list(Employee);
以上方法有效,在列表函数中我得到 cname = 'Employee'
但是,如果我们使用 ng build --env=prod 构建此解决方案,代码将失败,我们会得到 cname = undefined。
为什么会发生这种情况,如何解决?在开发构建中编译和工作的东西不应该在生产中工作吗?
【问题讨论】:
-
无论如何我不会依赖函数/类名,因为它可能会在缩小后发生变化。
-
为什么你在这个泛型中使用“新”关键字?
-
嗯,这是我们在文档中看到的使泛型工作的语法,否则会出错。
标签: javascript angularjs typescript angular5