Понизьте Angular Directive и используйте его в шаблоне AngularJS - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь преобразовать AngularJS директивы в Angular. Запуск AngularJS и Angular вместе, используя ngUpgrade.

У меня есть директива AngularJS, как показано ниже:

angular.directive('countClicks', function($timeout) {
    return {
        restrict: 'A',
        link: function(scope, elem, attrs) {
            scope.clickCount = 0;
            elem.on('click', function() {
                // Code
            });
        }
    };
});

в пересчете на угловой:

@Directive({
    selector: '[count-click]'
})

export class CountClickDirective implements AfterViewInit {
    constructor(public elem: ElementRef) { }
    clickCount = 0;

    ngAfterViewInit() {
        this.elem.nativeElement.querySelector('count-click', addEventListener('click', function() { 
            console.log('test directive'); 
        }));
    }
}

ngAfterViewInit не вызывается при нажатии на

Понизьте указанную выше перенесенную директиву до AngularJS, чтобы ее можно было использовать в шаблоне AngularJS

.directive('countClick', <any>downgradeComponent({
    component: CountClickDirective,
}))

Шаблон AngularJS:

<span countClick ng-click="test()"></span>

component.ts:

test() {
    return 'something';
}
...