- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现 CanDeactivate
我的主要组件之一中的功能。为了测试它,我让它总是返回 false
所以路线不能改变。
这是CanDeactivate
调用 component.canDeactivate()
的实现返回一个解析为 false 的 Promise:
@Injectable()
export class CanDeactivateNewRecord implements
CanDeactivate<NewRecordComponent> {
canDeactivate(
component: NewRecordComponent,
currentRoute: ActivatedRouteSnapshot,
currentState: RouterStateSnapshot,
nextState: RouterStateSnapshot ):
Observable<boolean>|Promise<boolean>|boolean {
return component.canDeactivate();
}
}
const recordsRoutes: Routes = [
{
path: 'nou',
component: NewRecordComponent,
canDeactivate: [CanDeactivateNewRecord]
},{
path: ':id',
component: RecordComponent
}
];
back
服务
Location
来自
@angular/common
导航到上一页有两种不同的情况:
location.back()
足够多的时间(与通过应用程序的导航历史长度一样多)它使导航返回到应用程序启动之前的页面。
最佳答案
我知道这已经很晚了,但是我遇到了完全相同的问题,并想将其留在这里以供后代使用。正如另一个人所说,这是一个尚未解决的已知 Angular 问题。我可以使用一种解决方法,可以在这里找到:github
您的代码实现如下所示:
@Injectable()
export class CanDeactivateNewRecord implements CanDeactivate<NewRecordComponent> {
constructor(
private readonly location: Location;
private readonly router: Router;
){}
canDeactivate(component: NewRecordComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState: RouterStateSnapshot ): Observable<boolean>|Promise<boolean>|boolean {
if(component.canDeactivate()){
return true
}else{
const currentUrlTree = this.router.createUrlTree([], currentRoute);
const currentUrl = currentUrlTree.toString();
this.location.go(currentUrl)
return false
}
}
}
如果 canDeactivate 返回 false,则获取最近的路由并插入回 url 树中。
关于 Angular 。如何使用 Location.back() 使 CanDeactivate 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44030261/
我正在尝试在 Angular 7 中设置一个简单的 canDeactivate 守卫,我尝试了一些在线教程中的代码,但它们都产生了相同的错误: "Type 'CanDeactivate' is not
我正在开发一个 angular 应用程序,如果用户在编辑时离开页面时未保存更改,我需要显示一条警报消息。 我已经在路由中创建并注册了一个 candeactivate 保护,它在父组件中工作正常。但不能
我正在尝试在路由中使用 CanDeactivate 函数,但在另一条路由上调用时从未调用 canDeactivate 函数。 CanDeactivateGuard : import { Injecta
我已经实现了一个 CanDeactivate 保护来避免用户在上传过程中离开页面并且它有效。问题是我的消息始终是默认消息(由于浏览器语言而使用荷兰语),即使我自己设置消息,仍然显示相同的默认 conf
我正在尝试在我的组件中添加 CanDeactivate 功能。我有一个其中有一个输入字段和按钮的表单。我希望如果用户在输入字段中输入某些内容并移动到下一个屏幕而不提交,它将显示一个对话框。如果用户从对
每当 canDeactivate() 返回 false 时,我都会遇到一些问题,它会更改窗口历史记录,因为它变为 true 并且如果我按下后退按钮。我正在导航到其他一些 URL 或应用程序本身之外。
这是我的 canDeactivate 守卫,它可以工作。但是我不想在使用提交按钮时调用守卫。只有当我通过任何其他方式导航时。怎么办? import { Injectable } from '@angu
我创建了一个 CanDeactivate 守卫,它返回一个 observable,并将其应用于一个加载到内部嵌套路由器导出中的组件。每当有人试图导航到另一个 url 时,是否应该调用这个守卫?我问这个
在我当前的注销调用中,我有这样的事情: getLogoutConfirmation(){ // get confirmation in modal and perform logout
我一直在尝试编写一个 canDeactivate 守卫来检查来自可观察流的保存状态并相应地工作。 我的服务是这样的 import { Injectable } from '@angular/core'
我有一个确认/取消模式对话框,当用户离开路线时弹出。我通过使用带有 canDeactivate 方法的守卫来做到这一点。但是,我希望 canDeactivate 等到它从模态返回任何内容之前得到响应。
在我的 Ionic 5 应用程序中,我有以下导航路径。 PageHome -> PageA -> PageB 我已经为 PageA 实现了 CanDeactivate 保护。 export clas
我为 CanDeactivate 功能添加了以下路由器保护,以验证未保存的更改,这对我来说工作正常 导出接口(interface) CanComponentDeactivate { canDeacti
我正在尝试使用 canDeactivate 路由器防护。我传入的组件 (ClaimsViewComponent) 在代码第一次运行时为空。但在随后的运行中,代码按预期运行。 我们试图弄清楚为什么组件在
是否可以在 Angular 2 RC5 路由器的 CanDeactivate 防护中获得预期的路线?我看到有关 CanActivate ( CanActivate ) 的类似问题的答案,但这在 Can
我想用 canDeactivate 中的 Alertify 确认替换经典确认。我尝试实现以下代码,但单击“确定”时它不会返回 True。有人可以就此提出建议吗? import { Injectable
这是我的付款 component.ts ,我在其中使用了 Candeactivate 这样,每当用户尝试从该组件移动到其他组件时,我都会收到提示。它工作正常,现在的问题是,当用户完成付款并且当我尝试路
在我的 Angular 4 应用程序中,我有一些带有表单的组件,如下所示: export class MyComponent implements OnInit, FormComponent {
如果用户从带有脏表单的页面导航,我成功地使用 canDeactivate 提供警告消息: 我使用的代码在这里: is_submit = false; canDeactivate() {
我正在实现 CanDeactivate我的主要组件之一中的功能。为了测试它,我让它总是返回 false所以路线不能改变。 这是CanDeactivate调用 component.canDeactiva
我是一名优秀的程序员,十分优秀!