3

私のディレクティブでは、テンプレートパスを生成するために定数(MODULE_ROOT_URL)が必要です。ディレクティブ構文では、ディレクトリファクトリ関数に定数を挿入できます。 このディレクティブをAngular 1.5コンポーネントに変換するにはどうすればよいですか? Angular 1.5コンポーネントにサービスをインジェクトでき​​ますか?Angular 1.5コンポーネントのtemplateUrlプロパティにサービスを挿入することはできますか?

ありがとうございました。

更新: サービスはコンポーネントコントローラに注入できます。 しかし、コンポーネントのtemplateUrlプロパティのサービスを挿入するにはどうすればよいですか?

更新2: plnkrをご覧ください。私は、ディレクティブとコンポーネントの両方のバージョンを作成します。 ディレクティブのバージョンが正常に動作します。コンポーネントのバージョンがエラーしているが[ngTransclude:孤児]角1.4ティル

https://plnkr.co/edit/DMumuIpXJY6RDCX6XObz?p=preview

angular.module('AbcModule') 
     .directive('abcDirective', ['MODULE_ROOT_URL', function (MODULE_ROOT_URL) { 
      return { 
       restrict: 'E', 
       templateUrl: MODULE_ROOT_URL + 'abc/abc.tpl.html' 
      } 

     }]); 
+1

可能な重複(http://stackoverflow.com/questions/34891397/angularjs-1-5-component-dependency-injection) – medievalgeek

答えて

10
angular.module('AbcModule') 
.component('abcDirective', { 
    template: '<div ng-include="$ctrl.rootUrl ? $ctrl.rootUrl + \'abc/abc.tpl.html\': \'\'"></div>', 
    controller: function(MODULE_ROOT_URL) { //<--injected dependency here. 
    var self = this; 
    self.rootUrl = MODULE_ROOT_URL; 
    } 
}]); 

templateUrltemplateであることができる機能や依存関係を注入することができます。

angular.module('AbcModule') 
.component('abcDirective', { 
    restrict: 'E', 
    templateUrl: function(MODULE_ROOT_URL) { 
      return MODULE_ROOT_URL + 'abc/abc.tpl.html'; 
    } 
}); 
+0

@PankajParkarこれは '.directive'では当てはまりますが、' .component'では当てはまりません。気軽にドキュメントを読んで試してみてください。 – zeroflagL

+0

お詫び申し上げます、あなたは素晴らしいです。 +1、私は私の答えを削除します、OPはこの答えを受け入れる。ちょうど私はあなたの答えを通知するために私の答えにコメントを追加しました。 :-) –

+0

恐ろしい、ありがとう – thermostat

1

を、directive DDOはあなたが場所に依存関係を持つことができる機能によるリターンとなっています。しかしAngle 1.5.3では、コンポーネントのcontrollerの中に依存関係を追加するコントロールを持つことができます。コントローラー内に依存関係を注入すると、以下のように回避できます。ng-include &

マークアップ

+0

おかげ[1.5コンポーネント依存性注入をangularjs]。しかし、ng-transcludeでは動作しません。テンプレートにng-transcludeが含まれている場合、私はtranscludeを設定しました:true、ユーザーのコンテンツはコンポーネントに読み込まれません。 – thermostat

+0

@thermostat私にplunkr/fiddleを提供できますか? –

+0

ありがとうございます。 plnkrをご覧ください。私は、ディレクティブとコンポーネントの両方のバージョンを作成します。 ディレクティブのバージョンが正常に動作します。しかし、コンポーネントバージョンにはエラーがあります。 https://plnkr.co/edit/DMumuIpXJY6RDCX6XObz?p=preview – thermostat

関連する問題