2017-10-27 7 views
0

私はES6クラスとして角度jsサービスを使用しようとしています。しかし、エラーを得る。クラスコンストラクタBaseServiceを 'new'なしで呼び出すことはできません

クラスコンストラクタBaseServiceは、 'new'なしでは呼び出せません。

サービスコードです。

"use babel"; 

(function() { 
    'use strict'; 

    class BaseService { 
    constructor() { 
     this.data = { 
     items: [] 
     }; 
    } 

    loadData() { 
     this.data.items = ['one', 'two', 'three']; 
    } 
    } 

    angular.module('app').service('BaseService', BaseService); 
}()); 

ここに私が試しているリンクがあります。 https://embed.plnkr.co/D9MEJZe4pF6oztf7DP31/

+2

あなたの質問は何ですか? –

+0

私の質問は、私の上記のコードでエラーが発生する理由です クラスのコンストラクタBaseServiceは 'new'なしでは呼び出せません 私はインデックス.htmlからベースサービスを含めています。 動作しない完全なコードについては、https://embed.plnkr.co/D9MEJZe4pF6oztf7DP31/をご覧ください。 返信いただきありがとうございます。 – Farhan

答えて

0

// your Base Service class file 
 
export default class BaseService { 
 
    constructor() { 
 
     this.data = { 
 
      items: [] 
 
     }; 
 
    } 
 
} 
 

 
// your Angular service file 
 
import BaseService from './base.service.js'; // relative path to BaseService file 
 

 
export default class MyService extends BaseService { 
 
    constructor() { 
 
     super(); 
 
    } 
 
} 
 

 
// module definition file 
 
import MyService from './my.service.js'; // relative path to MyService file 
 
module.exports = angular.module('myMod',[]) 
 
.service('MyService', MyService);

+0

返信いただきありがとうございます。 このコードはエラーを発生します。Uncaught SyntaxError:予期しないトークンのインポート。 私はES6を初めて使用しています。私はサービスをクラスとして機能させて、継承を実行できるようにしたい。 – Farhan

+0

このコードは絶対に機能します(私は毎日このパターンを使用します)。しかし、あなたはまだBabelでコンパイルする必要があります。 –

+0

"Base"サービス自体が真のAngularサービスでない限り、Angularサービスとして登録する必要はありません。登録されたAngularサービスで拡張するスタンドアロンの「クラス」にすることができます。説明するためにコード例を更新します。 –

0

これは、使用しているAngularJSバージョン(1.5.0-rc.0)で問題です。クラスを正しく構築できません。バージョン1.5.0以上にアップグレードするとエラーが表示されなくなります。

+0

[固定小人](https://plnkr.co/edit/racdb0vNP8Dw3hRbJ33y?p=preview)。 – noppa

関連する問題