我在我的私人路線之一有一個路線警衛,當警衛返回假時,它不再被調用。下面的例子簡化了如何重現這種情況。多次呼叫angular2路線警衛
當用戶瀏覽使用鏈接:
<a [routerLink]="['my-private-route']">Link</a>
保護被調用,我看到控制檯和導航called
消息被取消(我在後衛回false
):
@Injectable()
export class CanActivateViaAuthGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>|Promise<boolean>|boolean {
console.log('called')
return false;
}
}
然而,當用戶再次點擊鏈接時,什麼也沒有發生。
爲什麼我需要這樣的行爲?我需要警惕被重複調用的原因是因爲我必須顯示模式Do you want to login? YES/NO
。當用戶點擊no
我想留在頁面上。但是當他決定再次導航時,我想讓他再次登錄。
有沒有什麼辦法可以阻止angular2緩存後衛結果?
使用的值請提供Plunker重現。我希望這也能工作。 –
@GünterZöchbauer有趣。我做了那個笨蛋,確實在那裏工作。 https://plnkr.co/edit/17CBn14zPuyrAhVnS4pA我將研究我的代碼如何不同。謝謝你:-) –
@GünterZöchbauer的區別是Angular 2.2.0 vs 2.1.2。看起來這個守衛緩存出現在2.2.0中。 –