在我以前的AngularJS应用程序中,我们制定了一个指令,根据滚动位置向一个元素添加和删除一个类:
(function () {
'use strict';
angular.module('pb.ds.components').directive('pbdsHeaderShadow', function ($window) {
return {
restrict: 'AE',
link: function postLink (scope, element) {
angular.element($window).on('scroll', function () {
if (this.pageYOffset > 20) {
element.addClass('shadow');
} else {
element.removeClass('shadow');
}
});
}
};
});
})();
Angular(6)创建同一指令的方法是什么?
答案 0 :(得分:1)
在黑暗中投掷一点点......
@Directive({
selector: '[pbdsHeaderShadow]',
})
export class HeaderShadowDirective implements OnInit, OnDestroy {
@HostBinding('class.shadow') shadow: boolean;
constructor() { }
ngOnInit() {
if (typeof window !== undefined) {
window.addEventListener('scroll', () => this._checkScroll());
}
}
ngOnDestroy() {
if (typeof window !== undefined) {
window.removeEventListener('scroll', () => this._checkScroll());
}
}
private _checkScroll() {
if (typeof window !== undefined) {
this.shadow = (window.pageYOffset > 20);
}
}
}