次の 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-colour」属性値が存在する必要があります。
Angular 1 をアップグレードする次の Angular 2 コンポーネントがあります。
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」 - テンプレート引数が解決されていません!
何か案は?