[英]Angular Services built with ES6 classes and the extend keyword causing Unknown provider error in IE11
目前,我正在使用的有角度的1.5客戶端在IE11上引發許多未知的提供程序錯誤。 我目前已將問題縮小為在服務文件中使用'extends'關鍵字 。
關於它們的某些事情或者沒有被babel正確地編譯,或者沒有被瀏覽器正確地解釋。
服務:
'use strict';
import RequestService from './request.service';
const path = 'users';
/**
* @class
* @extends RequestService
*/
export default class UserService extends RequestService {
/**
* @param {Object} $q - angular promise library
* @param {Object} $http - angular http service
* @param {Object} appConfig - app config object
*/
constructor($q, $http, appConfig, AuthService, BorrowerService, SellerService) {
'ngInject';
super($q, $http, appConfig, path);
this.AuthService = AuthService;
this.BorrowerService = BorrowerService;
this.SellerService = SellerService;
}
注射:
export function run($auth, $rootScope, $window, $state, $stateParams, $uibModalStack, UserService) {
'ngInject';
模塊:
const module = angular
.module('sba.core', [...])
.run(routesRun);
有人知道這里到底發生了什么嗎? 據我所讀,Babel應該為所有支持prototype.__proto__
瀏覽器都支持extend關鍵字。
版本:
節點v6.8.0
Angularjs v1.5.8
babel-core v6.18.2
babel-polyfill v6.16.0
實際上,這個問題比我最初想象的要復雜。 最終導致了幾個問題。 'extends'語句,使用'import'來獲取我們正在擴展的類。 但是,我們可以通過確保使用顯式字符串而不是使用class.name初始化服務來解決此問題。
import UserService from './user.service';
// this cause unknown provider error
angular.service(UserService.name, UserService);
// this works
angular.service('UserService', UserService);
這確實突顯了使用String文字而不是引用注冊服務的重要性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.