我的问题: 我想在一个单独的文件中有一个默认数据,所以我可以调用它来重置默认值,如果我想,但Const数据得到更新。
我可以在构造函数中直接硬编码值,但这会阻止我在不同模块中使用相同的“空白状态”。
流程:
export const CONST_DATA: ConstDataStructure {
item1: 'Basic String 1',
item2: 'Basic String 2'
item3: 'Basic String 3'
}
import { CONST_DATA } from './data.blank';
@Injectable()
export class DataService {
getDefaultValue() {
return Promise.resolve(CONST_DATA)
}
}
export class App implements OnInit {
defaultData: ConstDataStructure;
constructor(private dataService: DataService) {}
ngOnInit() {
this.resetDefaultData();
}
resetDefaultData() {
this.dataService.getDefaultValue().then(data => {
this.defaultData = data;
console.log("Return of the Promeses should have been resseting my data to the default???");
});
}
}
问题:为什么ngModel可以更新私有服务,该私有服务从引用常量的承诺返回异步?
有什么问题,如何解决这个问题。请参阅plnk exemple here:完整运行示例。
答案 0 :(得分:0)
... Intresting 我想问题是你的服务(就像一个单身人士)会返回一个已解决的承诺。这个承诺引用了每个单独调用的同一个对象。您的组件对该对象具有相同的引用:
this.defaultData = data
溶液: 更改您的服务以返回此对象的克隆:
export class DataService {
getDefaultValue() {
let data = Object.assign({}, CONST_DATA); // cloned data object
return Promise.resolve(data);
}
}