在浏览器中使用来自常规JS的Angular 2服务

时间:2017-04-19 07:52:38

标签: angular typescript

我有一个Angular 2服务,意思是一些组件正在使用的typescript类,它通过http从Web服务获取数据。 ng服务使用Angular的http,以及rxjs Observables和observable操作符。 我需要在一个完全不同的应用程序中重用这个ng服务,这个应用程序是vanilla JS(没有角度,没有打字稿)。

是否可以只编译ng服务及其依赖项(http,rxjs)并将其打包成一个可以在浏览器中使用的独立的自给自足的JavaScript模块?

1 个答案:

答案 0 :(得分:0)

您仍然可以使用现代 JavaScript。使用ECMAScript6

模块化HTTP请求示例(可在整个应用程序中轻松重复使用)

export default obj => {
    return new Promise((resolve, reject) => {
        let xhr = new XMLHttpRequest();
        xhr.open(obj.method || "GET", obj.url);
        if (obj.headers) {
            Object.keys(obj.headers).forEach(key => {
                xhr.setRequestHeader(key, obj.headers[key]);
            });
        }
        xhr.onload = () => {
            if (xhr.status >= 200 && xhr.status < 300) {
                resolve(xhr.response);
            } else {
                reject(xhr.statusText);
            }
        };
        xhr.onerror = () => reject(xhr.statusText);
        xhr.send(obj.body);
    });
};

更新1:

用于在ECMAScript6(JavaScript)中构建等效的Angular2 http服务的有用文档: