Атрибуты шаблона не разрешены для обновленной директивы компонента Angular 1

У меня есть следующая директива Angular 1:

return function(module) {
    module.directive('myButtonUpgrade', myButtonUpgrade);

    function myButtonUpgrade() {
        return {
            restrict: 'E',                
            template: template(),                
            scope: {
                image: '=',
                imageColour: '='
            }
        };

        function template() {
            var html = '<my-button visible="flipVisible"\
                            enabled="enabled"\
                            image="{{::image}}"\
                            image-colour="{{::imageColour}}"\
                       </my-button>';

            return html;
        }
    }

    return myButtonUpgrade;
};

Директива использует директиву my-button внутри своего шаблона. Директива "my-button" требует наличия значений атрибутов "image" и "image-color" перед компиляцией своего шаблона.

У меня есть следующий компонент Angular 2, который обновляет Angular 1:

import { Component } from '@angular/core';
import { upgradeAdapter } from '../../../upgrade/index';

var myButtonEx = upgradeAdapter.upgradeNg1Component('myButtonUpgrade');

@Component({
    selector: 'my-button-ex',
    template: '<my-button-ex [image]="refresh"></my-button-ex>',
    directives: [myButtonEx] 
})
export class ButtonExComponent {        
}

Как вы можете видеть, шаблон устанавливает привязки [image] к "refresh", однако это не разрешается при рендеринге "my-button-ex" директивы Angular 1.

Похоже, что адаптер обновления пытается сначала скомпилировать синтаксис HTML без разрешения аргументов шаблона:

upgrade_ng1_adapter.ts
compileTemplate(...){
   this.linkFn = compileHtml(this.directive.template);
}

"this.directive.template" - аргументы шаблона не разрешены!

Есть идеи?

0 ответов

Другие вопросы по тегам