将 Progress JSDO 与 Angular CLI 项目一起使用

Using Progress JSDO with Angular CLI project

我正在尝试创建一个 Angular 应用程序作为 API 的客户端,该应用程序需要使用 Progress JSDO 通过业务实体与 OpenEdge 数据进行交互。我是 Angular 开发的新手,但我对 Progress JSDO 相当熟悉,所以我觉得我的问题根源在于我如何在项目中包含进度。

我找到了这个例子,我认为它已经过时了:

Progress Community Post

与此 PUG 挑战 PDF 相同:

PUG Challenge PDF

这是我使用的与 JSDO 交互的代码:

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;
    }
}

此代码在 Sublime 中查找文件,TypeScript 识别所有类型和方法等,并且一切都可以正常编译。但是,在浏览器中,我从 Chrome 开发人员工具中收到一条错误消息:

我觉得 Progress 找不到 jQuery,即使当我通过 npm 将 JSDO 安装到我的项目时 jQuery 也随之而来。我缺少一个步骤吗?有没有人成功地将 JSDO 包含在可以列出步骤的 Angular 项目中?

我将尝试在 Plunker 或其他软件中创建一个工作示例,但我真的不知道该怎么做,所以希望这对现在来说足够了。

提前致谢!

这是一个工作示例

https://github.com/consultingwerk/Angular2JsdoSamples/tree/master/Demo1-EGarcia-Simple

确保 Jquery 在您的 angular-cli.json

中被引用为脚本