问题描述
功能:Feature [] = [];
使用此代码,我可以将该数组项拖放并保存到存储中
drop(event: CdkDragDrop<string[]>) {
moveItemInArray(this.features,event.prevIoUsIndex,event.currentIndex);
window.localStorage.setItem('features',JSON.stringify(this.features));
}
@H_502_6@
有了这个,我订阅了数据,一切正常... 在这种情况下,一切都很好,即使我再添加新项目
ngOnInit() {
this.isLoading = true;
this.featuresService.getFeatures();
this.featuresSub = this.featuresService.getFeatureUpdateListener()
.subscribe((featureData: {features: Feature[]}) => {
this.features = featureData.features
this.isLoading = false;
@H_502_6@
但是如果我替换此行,则此this.features = featuresData.features 我只会看到保存的本地存储数据
let retrievedData = localStorage.getItem("features") || '{}';
let newFeaturesArr = JSON.parse(retrievedData);
this.features = newFeaturesArr
})
.....
@H_502_6@
是否知道如何混合这两种逻辑:如果我刷新页面会看到本地存储排序的项目,如果我添加新项目会显示+,则立即在最后显示它
解决方法
我认为您的问题可能还不那么清楚,但是根据您所说的,您既可以将localStorage数据也可以将newFeatures创建为对象并将它们合并:
this.features = Object.assign(retrievedData,newFeatures);
或将它们都创建为数组并合并它们:
this.features = retrievedData.concat(newFeatures)