Попытка вынести размер окна на окно изменения размера через поток в угловом 2 компонента с использованием в async
трубы:«асинхронной» труба не оказывающего обновления потока
<h2>Size: {{size$ | async | json}}</h2>
const windowSize$ = new BehaviorSubject(getWindowSize());
Observable.fromEvent(window, 'resize')
.map(getWindowSize)
.subscribe(windowSize$);
function getWindowSize() {
return {
height: window.innerHeight,
width: window.innerWidth
};
}
@Component({
selector: 'my-app',
providers: [],
template: `
<div>
<h2>Size: {{size$ | async | json}}</h2>
</div>
`,
directives: []
})
export class App {
size$ = windowSize$.do(o => console.log('size:', o));
constructor() { }
}
Но только компонент отображает исходное состояние и игнорирует обновления потока. Если вы откроете консоль, при изменении размера окна вы увидите обновления из того же потока.
Не могу понять, что мне не хватает здесь.
Вот plunker
Хех, это определенно решает его. Чтение небольших зон просрочено. Но в моей реализации я хочу отвлечь поток размера в другом файле (без компонента, без ngOnInit) и выставить отображаемые высоты $ и ширину $ streams для всех компонентов, которые нужно прикрепить по мере необходимости. Как я могу сообщить зонам об этих обновлениях потока? – Birowsky
@Birowsky, одним из способов было бы вручную запустить обнаружение изменений после изменения модели просмотра: http://stackoverflow.com/a/35106069/215945. Вот плункер, показывающий, что: http: // plnkr.co/edit/eiua3K9aRRFEyxV3vbtP? p = preview –