【问题标题】:How to reload a page in angular2如何在angular2中重新加载页面
【发布时间】:2016-06-16 07:49:08
【问题描述】:

如何在 angular2 中重新加载页面。
在通过网络搜索时,我得到了一个代码 "this._router.renavigate()" 来重新加载页面,但看起来它不适用于 angular2 的最新版本。
另一种方法是'window.location.reload()',但这不是有角度的做法。

【问题讨论】:

  • 没有 Angular 重新加载页面的方法,因为通常你不想在 Angular 应用程序中这样做。用例是什么?
  • renavigate() 也不应该重新加载页面,而只是再次导航到相同的路径。页面重新加载是不同的,因为它会重新初始化整个 Angular 应用程序。
  • 用例:始终启动应用程序/信息亭。需要一种方法让应用自行更新

标签: angular angular2-routing


【解决方案1】:

如果你真的想重新加载页面,你需要在角度区域之外运行 location.reload()

this.zone.runOutsideAngular(() => {
    location.reload();
});

使用 RC6 测试

完整示例

import { Component, NgZone } from "@angular/core";

@Component({        
    templateUrl: "template.html"    
})
export class ReloadComponent{
    constructor(
        private zone: NgZone) {
    }

    reloadPage() { // click handler or similar
        this.zone.runOutsideAngular(() => {
            location.reload();
        });
    }
}

【讨论】:

  • 谢谢你。它真的很有帮助。唯一有效的。你是救生员。
【解决方案2】:

对于部分有办法编写自己的函数

   public renavigate(): void {
   let params: Object = {};
   Object.assign(params, this.routeParams.params);
   params['ref'] = (params['ref'] === ref) ? ref + new Date().getTime() : ref;
   this.router.navigate(['Foo', params]);
   }

【讨论】:

【解决方案3】:

这对我有用:

method().subscribe(
   location.reload();
);

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,这对我有用:

    import { Location } from '@angular/common';
    
    constructor(private location: Location) {}
    
    ngOnInit() { this.load(); }
    
    load() {
      this.location.reload();
    }

    【讨论】:

      【解决方案5】:

      调整可见性是什么意思
         *ngIf="auth.loggedIn()"
      

      这使得用户体验更好

      【讨论】:

        【解决方案6】:

        location.reload() 将重新加载页面。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-02
          • 1970-01-01
          • 2016-08-30
          • 1970-01-01
          • 2019-08-09
          • 2016-11-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多