AngularJS works in a way different to how you are thinking it works. Give your head a shake and prepare to think a little differently.
In an AngularJS app, the displayed HTML or DOM, a mix of tags and business data, is generated client-side (browser). It should not be generated server-side with PHP, as you are trying to do.
AngularJS creates the displayed HTML client-side based on your AngularJS code/instructions and data. Your code/instructions include Javascript and the AngularJS template. Templates should not contain business data, but only instructions on where the data should be placed to create the HTML (or DOM) that is displayed. These instructions are ng-bind, {{var}}, ng-repeat, etc.
Just as it does not repeatedly retrieve your Javascript code/instructions from the server, AngularJS does not repeatedly retrieve your template code/instructions from the server. It gets it once, caches it locally, and re-uses it whenever it needs to re-display that page.
Your AngularJS templates really should be static *.html files, just like your .js (and .css) are static files. Only under some really weird requirement should you ever need to dynamically generate AngularJS templates with PHP.
(Now, to get the business data needed by the template, you use AngularJS's $http service. This makes a call to your PHP server-side. Your PHP code returns just the data, wrapped in JSON, ... and NOT wrapped in HTML.)