Как получить доступ к ngModelController в компонентах Angular1.5?

Когда я использую angular.component() для создания нового компонента, который предоставляет angular 1.5, функция связи отсутствует, поэтому старый способ внедрения ngModelController или любых других контроллеров не работает.

require: 'ngModel', link: function(scope, element, attrs, ctrls)

Приведенный выше код предназначен для доступа к ngModelController. Как мы можем получить к нему доступ в компоненте сейчас?

1 ответ

Вместо того, чтобы получить ctrls массив, вы получите их сейчас по имени, так же, как bindings использовать для:

class MyComponentController implements ng.IComponentController {

    public modelCtrl: ng.INgModelController;
    ...
    ...
    // use modelCtrl here
    // instead of ctrls[0]
    ...
    ...
}

const MyComponent: ng.IComponentOptions = {
    template: '...',
    bindings: {...},
    require: {modelCtrl: 'ngModel'},
    controller: MyComponentController
}

angular.module('myModule').component('MyComponent', MyComponent);

Или, если вы предпочитаете простой JS:

function MyComponentController() {
    ...
    ...
    // use this.modelCtrl here
    ...
    ...
}

var MyComponent = {
    template: '...',
    bindings: {...},
    require: { modelCtrl: 'ngModel' },
    controller: MyComponentController
};

angular.module('myModule').component('MyComponent', MyComponent);
Другие вопросы по тегам