簡體   English   中英

使用ES6類和extend關鍵字構建的Angular Services在IE11中導致未知提供程序錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM