EventEmitter не работает в Chrome / Safari
Я создал (с большой помощью) следующую директиву, в которой я отслеживаю позицию экрана Y и запускаю событие с этой информацией.
import {Directive, Output, EventEmitter} from "angular2/core";
@Directive({
selector: '[track-scroll]',
host: {'(window:scroll)': 'track($event)'},
})
export class TrackScrollDirective {
@Output('pageYPositionChange') pageYPositionChange: EventEmitter<any> = new EventEmitter();
track($event: any) {
this.pageYPositionChange.emit($event.pageY);
}
}
И пытается прослушать это событие в компоненте:
import {TrackScrollDirective} from "../directives/track-scroll.directive";
@Component({
selector: 'app-header',
moduleId: module.id,
templateUrl: './app-header.component.html',
directives: [Collapse, DROPDOWN_DIRECTIVES, ROUTER_DIRECTIVES, TrackScrollDirective]
})
export class AppHeader {
public isCollapsed:boolean = false;
pageY: number = 0;
constructor (
public authService: AuthenticationService
) {}
onPageYChange(pageY: number) {
this.pageY = pageY;
console.debug("PageY Pos ", pageY );
}
}
где в шаблоне этого компонента мы имеем следующее:
<nav class="navbar navbar-default navbar-fixed-top top-navbar" track-scroll (pageYPositionChange)="onPageYChange($event)" [ngClass]="{floating: pageY > 10}">
В FF все прекрасно работает, но это все, нигде больше. (пробовал сафари, хром)
Чего не хватает? Моя единственная мысль, что я использую неправильноEventEmitter
ОБНОВИТЬ
По-видимому$event.pageY
не существует в Chrome ... и фактически нет информации о позиции страницы вообще. Где я могу получить это?