装饰器不支持函数调用 [英] Function calls are not supported in decorators
问题描述
在ng build --prod时遇到问题:
I am facing an issue while ng build --prod:
装饰器中不支持函数调用,但在'initialState'中调用了'Ui'
Function calls are not supported in decorators but 'Ui' was called in 'initialState'
export const initialState: AppState = {
userAisles: null,
userItems: null,
userLists: null,
userShops: null,
ui: new Ui(),
config: new Config(),
};
和我的Ui班:
export class Ui {
loading: false;
itemsOrder = 'name';
itemsOrderSense = 'ASC';
listsOrder = 'date';
listsOrderSense = 'ASC';
listsConsultOrder = 'name';
listsConsultOrderSense = 'ASC';
history: string = null;
resolved = false;
constructor(values: Object = {}) {
return Object.assign(this, values);
}
}
如果我在initialState中对Ui类进行硬编码,则它可以工作,然后抱怨Config类,因此问题就在那里.我找不到任何解决方法来摆脱编译错误消息.
If I hardcode the Ui class in initialState, it works and then complains about Config class, so the problem is there. I don't find any solution to get rid of the compiling error message.
这是我的配置:
"@angular/animations": "^6.0.3",
"@angular/common": "^6.0.3",
"@angular/compiler": "^6.0.3",
"@angular/core": "^6.0.3",
"@angular/forms": "^6.0.3",
"@angular/http": "^6.0.3",
"@angular/platform-browser": "^6.0.3",
"@angular/platform-browser-dynamic": "^6.0.3",
"@angular/router": "^6.0.3",
"@ngrx/effects": "^6.1.0",
"@ngrx/router-store": "^6.1.0",
"@ngrx/store": "^6.1.0",
"@ngrx/store-devtools": "^6.1.0",
"angular-hammer": "^2.2.0",
"bootstrap": "4.1.3",
"core-js": "^2.5.4",
"font-awesome": "~4.7.0",
"moment": "^2.20.1",
"ng2-dragula": "^2.0.2",
"ngx-facebook": "^2.4.0",
"primeng": "^6.1.2",
"rxjs": "^6.2.2",
"rxjs-compat": "^6.2.2",
"zone.js": "^0.8.26"
感谢您的帮助
推荐答案
您可以使用工厂方法吗?
而不是调用new Ui()
或new Config()
,而是使用返回新Ui或新Config对象的函数,如下所示:
can you use a factory method?
instead of calling new Ui()
or new Config()
use a function that returns a new Ui or a new Config object like this:
export const uiFactory(){
return new Ui();
}
export const configFactory(){
return new Config();
}
export const initialState: AppState = {
userAisles: null,
userItems: null,
userLists: null,
userShops: null,
ui: uiFactory,
config: configFactory
};
还是不给他们打电话?
或者只是做
const config = new Config();
{.... config: config .....}
因为initialState将仅绑定一次.
cause initialState will be binded only once.
这篇关于装饰器不支持函数调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!