import { Observable, BehaviorSubject } from 'rxjs'; import { SizeService } from './responsive.interfaces'; const getWindowSize = () => { return { height: window.innerHeight, width: window.innerWidth }; }; export class WindowSizeService implements SizeService { size: Observable<{width: number, height: number}>; constructor() { let windowSize = new BehaviorSubject(getWindowSize()); this.size = windowSize.asObservable().distinctUntilChanged(); Observable.fromEvent(window, 'resize') .map(getWindowSize) .subscribe(windowSize); } }