的SETUP角4.3.1更新组件
我自学角用我自己的一个简单的应用程序:游戏将使用路由,服务等在着陆页(路线为'/'),我想要标题隐藏。头和router-outlet
一起在这样的应用组分(包括在品牌一些调试输出):
<nav class="navbar navbar-default navbar-fixed-top" [hidden]="!showHeader">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="" [routerLink]="['/']">FARKLE! {{showHeader | json}}</a>
</div>
</div>
</nav>
<div class="container">
<router-outlet></router-outlet>
</div>
组件类声明布尔showHeader
,并尝试对其进行更新时的路由变化是这样的:
import { Component, OnInit } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent implements OnInit {
showHeader: boolean;
constructor(
private router: Router
) {}
ngOnInit() {
this.showHeader = true;
this.router.events.subscribe(this.setHeader());
}
private setHeader() {
var showHeader = this.showHeader;
return function (event) {
if (event instanceof NavigationEnd) {
showHeader = event.url === '/';
console.log(event.url, showHeader, this.showHeader);
};
};
}
}
的this.showHeader
值正确地设置在ngOnInit
和标题会显示或不正确显示取决于它如何初始化。控制台显示导航期间发生的事件以及正确确定的值。问题在于,在回调的情况下,this
不再是组件。所以,我试图通过引用通过this.showHeader
。但是,由于它实际上没有进入事件回调的范围showHeader
没有反映在模板(最有可能的。
问题
那么,你如何从回调影响组件范围可观察到的?