无法使用 $postLink 向元素添加属性 - AngularJS

Can't add an attribute to an element using $postLink - AngularJS

我有一个简单的组件,我想做的是向我的输入元素动态添加一个属性 multiple,但不知何故它不起作用。为什么?有什么办法可以做我想做的事吗?

app.component('myComponent', {
    templateUrl: 'tmpl.html',
    bindings: {
        str: '@'
    },
    controller: function () {
        var ctrl = this;
        ctrl.$postLink = function () {
            $('#myInputId').attr('multiple', '');
        }
    }
}

这是解决方案:

app.component('myComponent', {
    templateUrl: 'tmpl.html',
    bindings: {
        str: '@'
    },
    controller: function ($element) {
        var ctrl = this;
        ctrl.$postLink = function () {
            $element.find('input').attr('multiple', 'multiple');
        }
    }
}

诀窍在于链接内容。问题中的代码不起作用,因为 input 在 DOM 中不存在,但在触发 $postLink 挂钩时。所以我们需要的是将$element服务注入controller,并用它来操作DOM.