是否可以将所有属性从组件实例传递到组件模板中的一个元素?
例如,我们说我有一个非常简单的组件:
angular.module('...').component('customInput', {
templateUrl: '<input ng-minlength="8">',
controller: function () { },
bindings: { }
});
我有什么方法可以做这样的事情:
<custom-input arbitrary-directive></custom-input>
然后回来
<input ng-min-length="8" arbitrary-directive></input>
没有明确指定arbitraryDirective
作为绑定?我只想将所有未指定的属性传递给内部元素。
答案 0 :(得分:0)
我得到的解决方案比声明更有必要。它也有点hacky和脆弱。所以我对此并不高兴,但它确实有效。
在控制器中,添加一个类似于此的$postLink
挂钩:
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);
});
}