2016-11-10 2 views
0

verwende ich eine Komponente in folgender WeiseWie kann ich andere Vorlage Urls für gleiche Komponente in Winkel 1,5

angular.module('moduleName') 
     .component('myComponent', { 
      templateUrl: 'templatePath1.tpl.html', 
      controller: myController, 
      controllerAs: 'vm', 
      bindings: { 
       b1: '&', 
       b2: '&' 
      } 
     }); 

Ich verwende implementiert haben, dass als <my-component b1="someThing1" b2="someThing2"></my-component>

Nun, ich möchte das verwenden selbe myController mit einer anderen Vorlage, die sich bei templatePath2.tpl.html befindet.

Eine Möglichkeit ist, eine andere Komponente myComponent2,

angular.module('moduleName') 
     .component('myComponent2', { 
      templateUrl: 'templatePath2.tpl.html', 
      controller: myController, 
      controllerAs: 'vm', 
      bindings: { 
       b1: '&', 
       b2: '&' 
      } 
     }); 

Gibt es eine Weise, die ich vorherigen Komponente templateUrl zu erstellen und wählen Sie basiert auf einem attr verwenden kann? Wenn ja, wie sollte man das machen?

+0

werden Sie einen Fehler erhalten, während die mycomponent2 mit der gleichen Vorlage URL und Controller zu erstellen? – RL89

Antwort

0

templateUrl kann eine Funktion sein, die das Element und die Attribute als Argument bekommt:

angular.module('moduleName') 
    .component('myComponent', { 
     templateUrl: function(element, attrs) { 
         return 'templatePath' + attrs.x + '.tpl.html'; 
        }, 

<my-component x="1"></my-component> 
Verwandte Themen