分享一個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