If you continue using fxLayout all the way through, it works:
<div style="height:100vh;" fxLayout="column">
<div fxFlex="auto" fxLayout="column" fxFlexAlign="center center">
<div fxFlex="none">header</div>
<div fxFlex="auto" fxLayout="column">
<h1>Title here</h1>
<div fxFlex style="overflow-y:auto">
<div style="height:3000px;background:red;">
Why is doesn't this scroll?
</div>
</div>
</div>
<div fxFlex="none" style="background:green;">footer</div>
</div>
</div>
Stackblitz
How i got to this solution:
Step 1:
<div style="height:100vh;" fxLayout="column">
<div fxFlex="auto" fxLayout="column" fxFlexAlign="center center">
<div fxFlex="none">header</div>
<div fxFlex="auto" fxLayout="column"> <!-- continue using fxLayout -->
<h1>Title here</h1>
<div fxFlex fxLayout="column" style="overflow-y:auto"> <!-- add corresponding fxFlex to child -->
<div fxFlex> <!-- add a div that can 'flex' -->
<div style="height:3000px;background:red;">
Why is doesn't this scroll?
</div>
</div>
</div>
</div>
<div fxFlex="none" style="background:green;">footer</div>
</div>
</div>
Step 2:
<div style="height:100vh;" fxLayout="column">
<div fxFlex="auto" fxLayout="column" fxFlexAlign="center center">
<div fxFlex="none">header</div>
<div fxFlex="auto" fxLayout="column">
<h1>Title here</h1>
<div fxFlex fxLayout="column"> <!-- move overflow style from here... -->
<div fxFlex style="overflow-y:auto"> <!-- ... to here -->
<div style="height:3000px;background:red;">
Why is doesn't this scroll?
</div>
</div>
</div>
</div>
<div fxFlex="none" style="background:green;">footer</div>
</div>
</div>
Step 3:
<div style="height:100vh;" fxLayout="column">
<div fxFlex="auto" fxLayout="column" fxFlexAlign="center center">
<div fxFlex="none">header</div>
<div fxFlex="auto" fxLayout="column">
<h1>Title here</h1>
<!-- <div fxFlex fxLayout="column"> --> <!-- remove unneeded div -->
<div fxFlex style="overflow-y:auto">
<div style="height:3000px;background:red;">
Why is doesn't this scroll?
</div>
</div>
<!-- </div> -->
</div>
<div fxFlex="none" style="background:green;">footer</div>
</div>
</div>