gpt4 book ai didi

Angular 2 可观察量 : Secure way to get the value that return my service

转载 作者:太空狗 更新时间:2023-10-29 19:33:22 26 4
gpt4 key购买 nike

我正在寻找方法来处理这个可观察对象抛给我的结果,并且我总是可以从回调外部获得服务返回给我的值。

我提出的一个问题:

经常会出现这样的情况,虽然服务成功返回值给我,但是我无法成功保存信息到this.templateFields[key].Lookup

  private getLookUpsFromFields() {
var lu: any[] = [];
//console.log('templatefields', this.templateFields);
for (const key in this.templateFields) {
if (this.templateFields[key].SimpleDataType === 'String List, Multi' ||
this.templateFields[key].SimpleDataType === 'String List, Single') {
//console.log('Field Lookup', this.templateFields[key].Field);
this._lookUpsService.getLookUpsOfField(this.model, this.templateFields[key].Field).subscribe(success => {
lu = this._lookUpsService.getArrayLook(success['metadataAllLookUpField']);
localStorage.setItem(this.templateFields[key].Field, JSON.stringify(lu));
}, error => {
this.ShowMsg(error);
});
this.templateFields[key].Lookups = JSON.parse(localStorage.getItem(this.templateFields[key].Field));
}
//localStorage.removeItem(this.templateFields[key].Field);
}
}

//查找服务

getLookUpsOfField(model: string, field: string){
//console.log(this.url + '/' + model + '/' + propertyType);
return this._httpS.get(this.url + '/' + model + '/' + field);
}


getArrayLook(lookups: any) {
var array: any[] = [];
if (lookups !== undefined && lookups !== null) {
lookups.map(x => {
array.push({Field: x.lookup_values.split(x.delimiter)[0], value: x.lookup_values.split(x.delimiter)[1]});
});
}
return array;
}

我知道处理服务返回值的一种方法是在可观察范围内处理它们,但我还有哪些其他选择?除了这两种选择,我还展示了:1-) 使用本地存储2-) 处理可观察范围内的逻辑

我想保证 this.templateFields[key].Lookup 总是收到回调的返回值。

一些替代方案?将提供任何额外信息。我正在使用 angular 2+

最佳答案

您可以创建服务来存储数据和获取数据创建一个变量来存储数据创 build 置数据和获取数据的方法

//数据服务

import { Injectable } from '@angular/core';
@Injectable()
export class CommonDataService {
public Data:any;

getData(): any{
return this.Data;
}

setData(data: any) {
this.Data= data;
}
}

存储数据调用service的set方法,获取数据调用service的get方法

private getLookUpsFromFields() {
var lu: any[] = [];
//console.log('templatefields', this.templateFields);
for (const key in this.templateFields) {
if (this.templateFields[key].SimpleDataType === 'String List, Multi' ||
this.templateFields[key].SimpleDataType === 'String List, Single') {
//console.log('Field Lookup', this.templateFields[key].Field);
this._lookUpsService.getLookUpsOfField(this.model, this.templateFields[key].Field).subscribe(success => {
lu = this._lookUpsService.getArrayLook(success['metadataAllLookUpField']);
this._commonDataService.setData(JSON.stringify(lu));
}, error => {
this.ShowMsg(error);
});
this.templateFields[key].Lookups = JSON.parse(this._commonDataService.getData()));
}
//localStorage.removeItem(this.templateFields[key].Field);
}
}

关于 Angular 2 可观察量 : Secure way to get the value that return my service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com