首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单击相同链接后刷新模板中的随机数?

如何在单击相同链接后刷新模板中的随机数?
EN

Stack Overflow用户
提问于 2018-04-26 08:53:33
回答 1查看 238关注 0票数 0

我测试了这个片段:

代码语言:javascript
复制
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() {


  }

}

代码语言:javascript
复制
<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>

这是一个模板子程序,关于:

代码语言:javascript
复制
<h1>random : {{random}}</h1>
<p>
  about works!
</p>

单击相同的链接后,如何生成新的随机数?如果我点击相同的链接“关于我们”,随机数是相同的。

测试用: NavigationEnd

代码语言:javascript
复制
//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 { }

代码语言:javascript
复制
//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试试看这个片段,不是随机的吗?可能是我又忘了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-26 08:59:24

订阅路由器事件,检查事件是否是导航端,并执行您的任务。

代码语言:javascript
复制
constructor(private router: Router) {
  this.router.events.subscribe(event => {
    if(!(event instanceof NavigationEnd)) { return; }
    this.random = Math.random();
  });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50038795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档