我有一個Angular 2服務,意思是一些組件正在使用的打字稿類,它通過http從Web服務獲取數據。 ng服務使用Angular的http和rxjs Observable和可觀察的運算符。 我需要在完全不同的應用程序中重新使用這個ng服務,這是一個香草JS(沒有角度,沒有打字稿)。在瀏覽器中使用常規JS的Angular 2服務
是否可以僅編譯ng服務及其依賴關係(http,rxjs)並將其打包爲可在瀏覽器中使用的獨立自給式JavaScript模塊?
我有一個Angular 2服務,意思是一些組件正在使用的打字稿類,它通過http從Web服務獲取數據。 ng服務使用Angular的http和rxjs Observable和可觀察的運算符。 我需要在完全不同的應用程序中重新使用這個ng服務,這是一個香草JS(沒有角度,沒有打字稿)。在瀏覽器中使用常規JS的Angular 2服務
是否可以僅編譯ng服務及其依賴關係(http,rxjs)並將其打包爲可在瀏覽器中使用的獨立自給式JavaScript模塊?
您仍然可以使用現代 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:
構建您Angular2 http服務的等效在ECMAScript6有用的文檔( JavaScript):
我不明白爲什麼它可能無法正常工作 –
任何原因,我該怎麼辦呢?我只是採取service.ts文件的JS輸出,並嘗試在Angular上下文外使用它?這肯定不會工作,因爲它依賴於Angular的東西,問題是我需要的其他角度的東西,如果有一個簡單的方法來打包它 – itaysk
如果你使用模塊,你已經知道你需要通過檢查導入。你的服務使用依賴注入嗎? –