我测试了这个片段:
import { Component, OnInit } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
@Component({
selector: 'app-about',
templateUrl: './about.component.html',
styleUrls: ['./about.component.css']
})
export class AboutComponent implements OnInit {
random;
constructor(private router: Router) {
console.log(this.router.onSameUrlNavigation);
this.router.onSameUrlNavigation = 'reload'
this.router.events.subscribe(event => {
if (!(event instanceof NavigationEnd)) { return; }
this.random = Math.random();
});
}
ngOnInit() {
}
}
<div class="page-header">
<div class="container">
<h1>Router Sample</h1>
<div class="navLinks">
<a [routerLink]="['/about']">About Us</a>
</div>
</div>
</div>
<div id="content">
<div class="container">
<router-outlet></router-outlet>
</div>
</div>这是一个模板子程序,关于:
<h1>random : {{random}}</h1>
<p>
about works!
</p>
单击相同的链接后,如何生成新的随机数?如果我点击相同的链接“关于我们”,随机数是相同的。
测试用: NavigationEnd
//app modlule
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';
import { AboutComponent } from './about/about.component';
const appRoutes: Routes = [
{ path: 'about', component: AboutComponent },
];
@NgModule({
declarations: [
AppComponent,
AboutComponent
],
imports: [
RouterModule.forRoot(
appRoutes,
{ enableTracing: true } // <-- debugging purposes only
),
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
//about.ts
import { Component, OnInit } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
@Component({
selector: 'app-about',
templateUrl: './about.component.html',
styleUrls: ['./about.component.css']
})
export class AboutComponent implements OnInit {
random;
constructor(private router:Router) {
console.log("click route again");
this.router.events.subscribe(event => {
if(!(event instanceof NavigationEnd)) { return; }
this.random = Math.random();
});
}
ngOnInit() {
}
}
我用NavigateEnd试试看这个片段,不是随机的吗?可能是我又忘了什么?
发布于 2018-04-26 08:59:24
订阅路由器事件,检查事件是否是导航端,并执行您的任务。
constructor(private router: Router) {
this.router.events.subscribe(event => {
if(!(event instanceof NavigationEnd)) { return; }
this.random = Math.random();
});
}https://stackoverflow.com/questions/50038795
复制相似问题