分享一個Angular的開發小技巧,說一下如何修改頁面的標題(Title)(進階版)。
Angular如何修改頁面的標題(Title)_進階
分享一個Angular的開發小技巧,說一下如何修改頁面的標題(Title)。
路由中加入參數來傳入Data
Angular2在路由设置里提供了data参数可以传值,如下︰
const routes: Routes = [
{
path: '',
component: AppComponent,
data: { title: 'NA'}
},
{
path: 'home',
component: AppComponent,
data: { title: 'home'}
},
{
path: 'index',
component: AppComponent,
data: { title: 'index'}
}
];
-
path是地址栏的显示。
-
component是调用的组件。
-
data则可以传数据,在组件内可以调用。
[memo] angular2里默认切换路由或者切换组件,页面的title是不会变化的。
調用Title服务可以修改頁面title
接者,我們先import 相關的核心服務(Title)
同時,可以用ActivatedRoute的snapshot的data属性,來获取當前路由内获取设置的参数
import { Component, OnInit } from '@angular/core';
import { Router, NavigationEnd, ActivatedRoute } from '@angular/router';
import { Title } from '@angular/platform-browser';
import { environment } from '../environments/environment';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
routeconfig: any;
title = 'angular-bh';
appname: string;
constructor(
private router: Router,
private activateroute: ActivatedRoute,
private titleservice: Title
) { }
ngOnInit(): void {
this.appname = environment.appName;
this.title = this.appname
/* Get the config information from the app routing data
and Set the page title */
this.router.events.pipe(
filter(event => event instanceof NavigationEnd)).pipe(
map(() => this.activatedRoute)).pipe(
map(route => {
while (route.firstChild) route = route.firstChild;
return route;
})).pipe(
filter(route => route.outlet === 'primary')).pipe(
mergeMap(route => route.data))
.subscribe((event) => {
this.titleService.setTitle(this.appname + "--" + event['title']);
console.log(this.appname + "--" + event['title'])
});
//.subscribe((event) => this.titleService.setTitle(this.appname + "--" + event['title']));
console.log(this.router.config);
}
}
Category
Angular
Keywords
Modern Web / Angular
License
使用 MIT 许可证发布。 详情请进入 LICENSE 查看。
Skyfu160