import {Component} from '@angular/core'; import {Router, ActivatedRoute, NavigationStart} from '@angular/router'; import {TranslateService} from '@ngx-translate/core'; import { filter } from 'rxjs/operators'; import { Observable } from 'rxjs-compat'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'] }) export class AppComponent { // 登陆状态 isLogin; // 当前登陆管理员 param = {value: 'admin'}; navStart: Observable; constructor(public route: ActivatedRoute, public translate: TranslateService, private router: Router) { // 导航开始事件 this.navStart = this.router.events.pipe( filter(evt => evt instanceof NavigationStart) ) as Observable; } public async ngOnInit() { // 语言初始化(若未设置语言, 则取浏览器语言) const currentLanguage = await localStorage.getItem('currentLanguage') || this.translate.getBrowserCultureLang(); // 当在assets/i18n中找不到对应的语言翻译时,使用'zh-CN'作为默认语言 this.translate.setDefaultLang('zh-CN'); this.translate.use(currentLanguage); // 记录当前设置的语言 localStorage.setItem('currentLanguage', currentLanguage); // const that = this; // this.navStart.subscribe(evt => { // if ( evt.url !== '/login') { // // 检查登陆状态 // this.checkLogin(that); // } // }); this.checkLogin(); } /** * 检查登陆状态 */ checkLogin() { this.isLogin = true; if (this.isLogin) { this.router.navigateByUrl('/forum'); } else { this.router.navigateByUrl('/login'); } } }