2017-03-29 5 views
0

Kann man alle Attribute von einer Komponenteninstanz an eines der Elemente in der Komponentenvorlage übergeben?Übergeben aller Attribute in der AngularJS-Komponente

Zum Beispiel sagen wir, ich habe eine sehr einfache Komponente:

angular.module('...').component('customInput', { 
    templateUrl: '<input ng-minlength="8">', 
    controller: function() { }, 
    bindings: { } 
}); 

Gibt es eine Möglichkeit, dass ich etwas tun kann:

<custom-input arbitrary-directive></custom-input> 

und zurück

<input ng-min-length="8" arbitrary-directive></input> 

ohne Angabe arbitraryDirective als speziell verbindlich? Ich möchte nur alle nicht spezifizierten Attribute an ein inneres Element weitergeben.

Antwort

0

Die Lösung, die ich bekam, war zwingender als deklarativ. Es ist auch irgendwie hacky und spröde. Also bin ich nicht schrecklich glücklich darüber, aber es funktioniert.

In der Steuerung, fügen Sie ein $postLink Haken, der etwa wie folgt aussieht:

this.$postLink = function() { 
    var input = $element.find('input'); // from the controller's second parameter, $element 
    // copy directives and stuff over to inner input element 
    angular.forEach($attrs, function (value, key) { 
    if (key[0] === '$') { 
     return; 
    } 

    var attr = $attrs.$attr[key]; 
    input.attr(attr, value); 
    }); 
} 
Verwandte Themen