在构建时我遇到了一个问题--prod:
装饰器不支持函数调用,但'init'中调用'Ui'
export const initialState: AppState = {
userAisles: null,
userItems: null,
userLists: null,
userShops: null,
ui: new Ui(),
config: new Config(),
};
Run Code Online (Sandbox Code Playgroud)
和我的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);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在initialState中对Ui类进行硬编码,它会起作用然后抱怨Config类,所以问题就出现了.我没有找到任何解决方案来摆脱编译错误消息.
这是我的配置:
"@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"
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
你可以使用工厂方法吗?而不是调用new Ui()或new Config()使用返回新 Ui 或新 Config 对象的函数,如下所示:
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
};
Run Code Online (Sandbox Code Playgroud)
或者他们不会被召唤?
或者只是做
const config = new Config();
{.... config: config .....}
Run Code Online (Sandbox Code Playgroud)
因为initialState只会被绑定一次。