0

Я пытаюсь создать простую директиву угловой радиогруппы. компоненту будет передан массив строк, идентификатор и атрибут для привязки выбранного параметра. Когда я запускаю мой код я получаю следующую ошибкуУгловая пользовательская директива .match не является функцией

angular.js:13642TypeError: a.match is not a function

вот что у меня есть: app.js:

angular.module('atp', []) 
.directive('appform', require('./application-directive')) 
.directive('radioGroup', require('./radio-group/radio-group-directive')) 
.directive('yesNoRadioGroup', require('./radio-group/yes-no-radio-group-directive')); 

радио-групповые directive.js:

function RadioGroupDirective(){ 
    return{ 
     restrict:'E', 
     transclude:true, 
     template:require('./radio-group-template.html'), 
     replace:true, 
     scope:{ 
      id:'=', 
      selected:'=', 
      options:'=' 
     } 
    } 
} 
module.exports = RadioGroupDirective; 

radio-group-template.html:

<div> 
    <label for="{{radioGroupId}}"><ng-transclude></ng-transclude></label> 
    <fieldset id="{{radioGroupId}}"> 
     <div ng-repeat="option in optionsArray track by $index"> 
      <label for="{{radioGroupId}}-{{$index}}">{{option}}</label> 
      <input id="{{radioGroupId}}-{{$index}}" type="radio" value="option" ng-model="selectedOption"> 
     </div> 
    </fieldset> 
</div> 

да-нет-радио-группы-directive.js:

function YesNoRadioGroupDirective() { 
    return { 
     restrict: 'E', 
     transclude:true, 
     template: require('./radio-group-template.html'), 
     replace: true, 
     scope: { 
      RadioGroupId: '=', 
      selectedOption: '=', 
      optionsArray: ['Yes', 'No'] 
     } 
    } 
} 
module.exports = YesNoRadioGroupDirective; 

использование:

<form> 
    <yes-no-radio-group radio-group-id="test" selected-option="Controller.Form.SelectedYesNo">Select Yes or No:</yes-no-radio-group> 
    <radio-group radio-group-id="test-radio" options-array="['Hello World','Some Other Option']" selected="Controller.Form.SelectedYesNo">Select one of the options:</radio-group> 
</form> 
+0

'template' должна возвращать строку. Не нужно «требовать». Используйте templateUrl и угловую вы получите его для вас – charlietfl

+0

см. Мой комментарий ниже. требуемый шаблон не является проблемой. он переводит требование непосредственно в шаблон: «

...
» –

+0

Итак, где в трассировке стека запущена ошибка? – charlietfl

ответ

0

Почему вы это делаете? Вам не нужно требовать сначала instance и, во-вторых, если вы требует HTML, и нужно templateUrl вместо шаблона

template:require('./radio-group-template.html'), 
+0

Я использую веб-пакет и html-загрузчик. require ('*. html) загружает файл в виде строки. https://github.com/webpack/html-loader –

Смежные вопросы