Reputation: 613
I've this in my main layout file
<body>
<header id="header" ng-controller="HeaderController"></header>
<div class="container" ng-view></div>
I've a header.html partial template in my directory structure.
How to include this template in my app? I thought angular automatically includes the template after processing the controller, but it doesnt work.
The header node should be replaced with the content of this file.
Upvotes: 59
Views: 80147
Reputation: 9935
From Angular 2
, ngInclude
has been removed and custom directives are preferred. This is the way I come up with
Define the main component for your app, which link to the master page
@View({
templateUrl: 'client/app/layout/main.html',
directives: [ROUTER_DIRECTIVES, Navigation, Footer]
})
@Component({selector: 'app'})
@RouteConfig(
routerConfig
)
class MainComponent {
}
And this is the main template
<!---- Navigation bar ---->
<navigation></navigation>
<!----/ Navigation bar ---->
<!---- Main Part ---->
<router-outlet>
</router-outlet>
<!----/ Main Part ---->
<!---- Footer ---->
<footer></footer>
<!----/ Footer ---->
base.html
, which will contain the body tag and the app tag<body> <app>Loading ...</app> </body>
Navigation
and Footer
like the MainComponent, which point to your partial templatesUpvotes: 6
Reputation: 5788
One way of including templates/html fragments from external files is to use the ng-include
directive (doc).
<ng-include src="'/path/to/the/header.html'"></ng-include>
or
<div ng-include src="'/path/to/the/header.html'"></div>
Upvotes: 98