在Angular CLI项目中使用Progress JSDO
我正在尝试创建一个Angular应用程序作为API的客户端,该API需要使用Progress JSDO通过业务实体和OpenEdge数据交互。我对Angular development非常陌生,但我对JSDO的进度相当熟悉,所以我觉得我的问题根源于如何将项目的进度包括在内 我发现了这个我认为已经过时的例子: 与此哈巴狗挑战相同PDF: 下面是我正在使用的与JSDO交互的代码:在Angular CLI项目中使用Progress JSDO,angular,rest,angular-cli,openedge,progress-4gl,Angular,Rest,Angular Cli,Openedge,Progress 4gl,我正在尝试创建一个Angular应用程序作为API的客户端,该API需要使用Progress JSDO通过业务实体和OpenEdge数据交互。我对Angular development非常陌生,但我对JSDO的进度相当熟悉,所以我觉得我的问题根源于如何将项目的进度包括在内 我发现了这个我认为已经过时的例子: 与此哈巴狗挑战相同PDF: 下面是我正在使用的与JSDO交互的代码: import { Injectable } from '@angular/core'; import
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';
import 'rxjs/add/operator/map';
import { progress } from 'jsdo';
import { PriceResponse } from './oo-price-response';
import { OOProduct } from './oo-product';
//Products JSDO service
@Injectable()
export class OEWebPriceService {
private tableName: string = 'Products';
private jsdo: any;
constructor() {
const serviceURI = 'myServiceURI';
const catalogURI = 'myCatalogURI';
let session = new progress.data.JSDOSession({ serviceURI: serviceURI });
session.login('devono|ulfoods.com','devono')
.then(() => {
session.addCatalog(catalogURI);
});
let productJSDO = new progress.data.JSDO({ name: 'Products' });
this.jsdo = productJSDO;
}
public getPrices(): Observable<OOProduct[]> {
return this.fetch();
}
private fetch(): Observable<OOProduct[]> {
let ttPrices=[];
let params = {
accountNumber: "945873",
ttPrice: {
ttPrice: [
{ seq: 0, productCode: "152709"},
{ seq: 1, productCode: "717141"},
{ seq: 2, productCode: "152711"}
]
},
userLoginID: "devono|ulfoods.com"
};
let prodPromise = new Promise((resolve, reject) => {
this.jsdo.invoke("GetPrices", params)
.done( (jsdo: any, success: any, request: any) => {
ttPrices = request.response.ttPrice.ttPrice;
resolve(ttPrices);
})
});
let result = Observable.fromPromise(prodPromise);
return result;
}
}
从'@angular/core'导入{Injectable};
从“rxjs/Observable”导入{Observable};
导入“rxjs/add/observable/fromPromise”;
导入'rxjs/add/operator/map';
从'jsdo'导入{progress};
从“/oo价格响应”导入{PriceResponse};
从“/oo产品”导入{OOProduct};
//产品JSDO服务
@可注射()
导出类OEWebPriceService{
私有tableName:string='Products';
私人jsdo:任何;
构造函数(){
const serviceURI='myServiceURI';
const catalogri='mycatalogri';
让session=newprogress.data.JSDOSession({serviceURI:serviceURI});
session.login('devono | ulfoods.com','devono')
.然后(()=>{
会话.添加目录(目录RI);
});
让productJSDO=newprogress.data.JSDO({name:'Products'});
this.jsdo=productJSDO;
}
public getPrices():可见{
返回这个。fetch();
}
private fetch():可观察{
让ttPrices=[];
设params={
账号:“945873”,
TTP价格:{
TTP价格:[
{seq:0,产品代码:“152709”},
{seq:1,产品代码:“717141”},
{seq:2,产品代码:“152711”}
]
},
userLoginID:“devono | ulfoods.com”
};
让prodPromise=新承诺((解决、拒绝)=>{
this.jsdo.invoke(“GetPrices”,params)
.done((jsdo:any,success:any,request:any)=>{
ttPrices=request.response.ttPrice.ttPrice;
解决价格问题;
})
});
让结果=可观察。从承诺(prodPromise);
返回结果;
}
}
这段代码看起来很完美,TypeScript识别了所有类型和方法,等等,一切都编译得很好。但是,在浏览器中,我从Chrome Developer Tools收到一条错误消息:
我觉得Progress找不到jQuery,即使当我通过npm将JSDO安装到我的项目中时,jQuery也跟着出现了。有我错过的一步吗?是否有人成功地将JSDO包含在一个有角度的项目中,并且能够规划步骤
我会试着在Plunker或其他什么东西中找到一个工作的例子,但我真的不知道如何做到这一点,所以希望这就足够了
提前谢谢 这是一个工作示例
确保Jquery在angular cli中作为脚本引用。json这是一个工作示例
确保Jquery在angular cli中被引用为脚本。json这正是我所需要的!正如您所说,我缺少angular-cli.json中的脚本引用,我遵循了这个示例,它工作得很好。谢谢这正是我需要的!正如您所说,我缺少angular-cli.json中的脚本引用,我遵循了这个示例,它工作得很好。谢谢