2016-06-16 12 views
7

Jak ponownie załadować stronę w kanale2.
Podczas przeszukiwania sieci, mam kod "this._router.renavigate()", aby ponownie załadować stronę, ale wygląda na to, że nie działa z najnowszą wersją angular2.
Innym sposobem jest 'window.location.reload()', ale nie jest to kanciasty sposób robienia tego.Jak ponownie załadować stronę w kątowym2

+2

Nie ma Angularnego sposobu przeładowania strony, ponieważ zazwyczaj nie chcesz tego robić w n Zastosowanie kątowe. Jaki jest przypadek użycia? –

+0

'renavigate()' również nie powinno przeładowywać strony, tylko po to, aby ponownie przejść do tej samej ścieżki. Przeładowanie strony jest czymś innym, ponieważ spowodowałoby to ponowną inicjalizację całej aplikacji Angular. –

+0

Przypadek użycia: zawsze w górę aplikacja/kiosk. Potrzebuję sposobu, aby aplikacja sama się zaktualizowała. –

Odpowiedz

2

do częściowego istnieje sposób napisać własną funkcję

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]); 
    } 
+0

Angular 2 routerCanReuse teraz może pomóc w nawigacji na tym samym URL: http://stackoverflow.com/a/37225256/5868331 – mayur

-3

location.reload() spowoduje przeładowanie strony.

11

Jeśli naprawdę chcesz, aby ponownie załadować stronę trzeba uruchomić location.reload() poza strefą kątową

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

badanego z RC6

Pełna Przykład

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(); 
     }); 
    } 
} 
+0

Thnak you. To naprawdę pomogło. Jedyne, co zadziałało. Jesteś ratownikiem. – user3719857

1

To działa dla mnie:

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

Co o toogle widoczności z

*ngIf="auth.loggedIn()" 

sprawia, że ​​o wiele lepsze UX

1

Miałem ten sam problem i to jest to, co pracował dla mnie:

import { Location } from '@angular/common'; 
 

 
constructor(private location: Location) {} 
 

 
ngOnInit() { this.load(); } 
 

 
load() { 
 
    this.location.reload(); 
 
}

Powiązane problemy