Hola, el modulo $http de angular hace peticiones de tipo
application/json, y PHP solo rellena la variable global $_POST cuando la peticion llega en formato
application/x-www-form-urlencoded o
multipart/form-data.
La solucion mas facil es indicarle a PHP que en lugar de leer desde $_POST tome los valores directamente en formato raw desde el stream
php://input<?php
//Leemos el stream raw y lo guardamos en la variable $postdata
//Como dicha variable esta en formato json debemos mapearla a un Array usando json_decode
//Imprimo el array completo
?>
Espero que te sirva de ayuda. yo me canse de renegar con esto cuando usaba Angular 1.6 + CodeIgniter 3