2016-09-16 21 views
0

我已經將我的項目更新到最新版本的Angular 2.0.0。 看來,this.location.back()不再按預期工作。 我的意思是:從'@ angular/common'導入{Location};Angular 2.0.0 location.back()破

如果this.location.back()被直接調用url更改,但html網站不會更改。

如果被放在裏面this.zone.run(()=> this.goBack()) URL是改變,但HTML網站被正確地改變。

我很確定,它與Angular2的舊版本候選版一起工作。

也許這是一個問題,它只與路由中的參數canActivate結合使用。

{path: 'thing', component: ThingComponent, canActivate: [AuthGuard]}, 

回答

0

看來,問題不在於location.back()。

這個愚蠢的問題是,當你在click事件中不使用event.preventDefault時,瀏覽器會做一些奇怪的事情。

正確的解決方法是: Angular2 router.navigate refresh page

不要忘記HTML類型的屬性。

1

我試過this.location.back(),它正常工作與角2.0

import { Component, Input, OnInit } from '@angular/core'; 
import {Location} from '@angular/common'; 
import { ActivatedRoute, Params } from '@angular/router'; 
import {Hero} from './hero' 
import { HeroService } from './hero.service'; 


@Component({ 
    selector: 'my-hero-detail', 
    templateUrl: 'app/hero-detail.component.html', 
    styleUrls: ['app/hero-detail.component.css'] 

}) 
export class HeroDetailComponent implements OnInit { 
    constructor(
     private heroService: HeroService, 
     private route: ActivatedRoute, 
     private location: Location) { 
     } 

    ngOnInit(): void { 
    this.route.params.forEach((params: Params) => { 
     let id = +params['id']; 
     this.heroService.getHero(id) 
     .then(hero => this.hero = hero); 
    }); 
    } 
    goBack(): void {  
    this.location.back(); 
    } 
    save(): void { 
    this.heroService.update(this.hero) 
     .then(this.goBack); 
    } 

    @Input() 
    hero: Hero; 
} 
+0

姆姆。對我來說,它不工作,我不能創建一個Plunker的例子,因爲它會嘗試重新加載router.back()http://plnkr.co/edit/v9QvgF3Xqix7fbFzz2ze?p=preview – Johannes