第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何在 Angular 中更新上一頁 URL

如何在 Angular 中更新上一頁 URL

明月笑刀無情 2022-01-07 13:27:32
問題:如何url從歷史記錄中刪除以前的路線,以便瀏覽器“返回”按鈕跳過它?在我的應(yīng)用程序中,如果數(shù)據(jù)無效或其他問題 -Angular執(zhí)行重定向到錯(cuò)誤頁面。但是如果在瀏覽器中按下“返回”按鈕 - 用戶會再次被重定向到錯(cuò)誤頁面并從那里重定向到錯(cuò)誤頁面。所以這是一種無休止的循環(huán)。這個(gè)想法是url從歷史記錄中刪除以前的(帶有無效數(shù)據(jù)的),因此以前的重定向會導(dǎo)致之前的頁面url帶有無效數(shù)據(jù)。我們browser.location在 vanilla 中有一些api JS,但是如何做到這Angular一點(diǎn)呢?更新:有很多方法可以獲取上一個(gè) url,例如:如何在 Angular 中確定上一個(gè)頁面的 URL?. 但是怎么設(shè)置呢?解決方案:我嘗試使用Angular Location.replaceState()來覆蓋歷史記錄。出于某種原因,它只是刪除了一個(gè)歷史條目而沒有替換它:https : //angular.io/api/common/Location#replaceState 類似的行為發(fā)生在vanilla JS History.replaceState():https : //developer.mozilla.org/en-US/docs/Web /API/歷史/replaceState我最終改變設(shè)計(jì),使用skipLocationChange: true在NavigationExtras: https://angular.io/api/router/NavigationExtras 所以巴林特Réthy的答案最適合。
查看完整描述

3 回答

?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

您需要使用導(dǎo)航選項(xiàng)。當(dāng)您收到導(dǎo)航到錯(cuò)誤頁面的錯(cuò)誤時(shí),應(yīng)該使用NavigationExtras來實(shí)現(xiàn)。您可以在那里定義skipLocationChangereplaceUrl。

  • skipLocationChange 在導(dǎo)航更改時(shí)跳過以將狀態(tài)推送到歷史記錄

  • replaceUrl 重新定義歷史中的當(dāng)前狀態(tài)

代碼應(yīng)如下所示:

this.router.navigate(['/error'], { replaceUrl: true });

文檔參考:https : //angular.io/api/router/NavigationExtras


查看完整回答
反對 回復(fù) 2022-01-07
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

Angular 路由保護(hù) CanActivate 方法將幫助您解決我們的問題,當(dāng)用戶導(dǎo)航或嘗試從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕時(shí)它會觸發(fā)。它還將為您提供可以根據(jù)您的要求輕松操作的下一個(gè) url 路由。您只需在提供程序中包含路由保護(hù)并實(shí)現(xiàn) CanActivate 路由保護(hù)。


step 1-實(shí)現(xiàn)CanActivate接口


import { Injectable } from '@angular/core';

import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';


@Injectable({

  providedIn: 'root',

})

export class AuthGuard implements CanActivate {

  canActivate(

    next: ActivatedRouteSnapshot,

    state: RouterStateSnapshot): boolean {

    // here you can write you logic example-> you can navigate to some where else protect navigation

    console.log('AuthGuard#canActivate called');

    return true;

  }

}

第 2 步 -> 告訴你的路由表你有一個(gè)守衛(wèi)來保護(hù)你的路由:P


 import { AuthGuard }  from '../auth/auth.guard';


    const adminRoutes: Routes = [


    { path: 'crises', component: ManageCrisesComponent },

    { path: 'admin',  component: AdminComponent, canActivate: [AuthGuard]} // -->your Auth guard will get register here 

    ];


查看完整回答
反對 回復(fù) 2022-01-07
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

對我來說,后退按鈕是瀏覽器和用戶的問題。我將解釋我自己,如果用戶想回去,你應(yīng)該讓他們回去,這對我來說是正確的方式,通常的流程以及應(yīng)該如何完成。

但為了實(shí)現(xiàn)這一點(diǎn),您可以這樣做:

在您的錯(cuò)誤頁面中,您可以使用 history.pushState 文檔:https : //developer.mozilla.org/en-US/docs/Web/API/History/pushState

  history.pushState(null, null, window.location.href);


查看完整回答
反對 回復(fù) 2022-01-07
  • 3 回答
  • 0 關(guān)注
  • 394 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號