2016-05-14 19 views
13

私は新しいAngular 1.5 component構文をプロジェクトで使用しようとしていましたが、コンポーネント定義に依存性を注入する方法を理解できません。ここで角度1.5コンポーネント依存性注入

コンポーネントに既存のディレクティブをリファクタリングでの私の試みです:様々な理由

angular 
    .module('app.myModule') 
    .component('row', { 
     bindings: { 
     details: '@', 
     zip: '@' 
     }, 
     controller: 'RowController', 
     templateUrl: basePath + 'modules/row.html' // basePath needs to be injected 
    }) 

、我々はtemplateUrlの一環として、当社のディレクティブの全てに一定のbasePathを注入します。

コンポーネントの定義が関数ではないため、コンポーネントでこれを行うにはどうすればよいですか?

答えて

14

templateUrlの機能を使用してURLを構成できます。しかし、指令の場合と異なり、コンポーネントtemplateUrlの機能はの注射可能な(参照docs)です。つまり、一定の注射可能な注射可能な注射可能な注射サービスです。正確にあなたが必要なもの:

.component('row', { 
    bindings: { 
    details: '@', 
    zip: '@' 
    }, 
    controller: 'RowController', 
    templateUrl: function(basePath, $rootScope) { // $rootScope is an example here 
    return basePath + 'modules/row.html' 
    } 
}) 

縮小化セーフ配列表記もサポートされています。

templateUrl: ['basePath', '$rootScope', function(basePath, $rootScope) { 
    return basePath + 'modules/row.html' 
}] 

デモ:http://plnkr.co/edit/jAIqkzZGnaEVPaUjyBrJ?p=preview

+0

パーフェクト! templateUrlを関数にすることは私には起こりませんでした。 – epb

関連する問題