Page title is the most common and important fact for a website as well as an application which influence the SEO score of a website. Generally, page title needs to change for each page depends on the page content. This article is for creating dynamic page title with AngularJS and ui-router.
At first, you need to download ui-router module and load in your application. Then configure your applications routes by using ui-router module.
Example of Dynamic Page Title with AngularJS:
app.config(function ($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/') $stateProvider.state('home', { url: '/', templateUrl: 'home.html', data: { title: 'Home Page' } }); $stateProvider.state('about', { url: '/about', templateUrl: 'about.html', data: { title: 'About Me' } }); $stateProvider.state('blog', { url: '/blog', templateUrl: 'blog.html', data: { title: 'Personal Blog' } }); $stateProvider.state('contact', { url: '/contact', templateUrl: 'contact.html', data: { title: 'Contact Me' } }); });
From the above code snippet, you can see I have configured my routing by using ui-router. According to ui-router I have used $stateProvider.state to create my individual route. And I added the title for each state which I will show into the browser.
app.run(['$rootScope', '$state', function ($rootScope, $state) { $rootScope.$on('$stateChangeSuccess', function () { $rootScope.title = $state.current.data.title; }); } ] );
And this snippet of code will execute while angular application will run. With the $rootScope.$on getting the successfully state changes ($stateChangeSuccess) and taking the each state’s title and assign into $rootScope.title.
And then modify your title tag to include ng-bind:
<title ng-bind="(title || 'Home') + ' - AngularJS Dynamic Title'"> AngularJS Dynamic Title </title>
This is really simple and easy way to set Dynamic Page Title with AngularJS. Here I have included a demo and source code link for you. Hope these will be helpful for you.
Demo Link: https://sohelrana820.github.io/dynamic-page-title-with-angular-js/#/
Source Code: https://github.com/sohelrana820/dynamic-page-title-with-angular-js