[英]Is there any way to prevent destroying a component in angular?
我们知道在angular中有一个ngOnDestroy()方法可以在销毁组件时运行,但是我想知道有什么方法可以防止销毁它?
CanDeactivate防护可以访问活动组件的实例,因此您可以实现hasChanges() ,以检查是否已进行更改并有条件地在离开前要求用户确认。 在下面的示例中, CanDeactivateComponent实现了hasChanges ()方法,该方法返回一个布尔值,该值指示组件是否检测到任何更改。 CanDeactivate保护的实现类似于CanActivate保护的实现(您可以创建一个函数或实现CanDeactivate接口的类):
import { CanDeactivate } from '@angular/router';
import { CanDeactivateComponent } from './app/can-deactivate';
export class ConfirmDeactivateGuard implements CanDeactivate<CanDeactivateComponent>
{
canDeactivate(target: CanDeactivateComponent)
{
if(target.hasChanges()){
return window.confirm('Do you really want to cancel?');
}
return true;
}
}
即使这是一个非常简单的实现, CanDeactivate也使用泛型,因此您需要指定要停用的组件类型。
在组件的Angular路由器中:
{
path: '',
component: SomeComponent,
canDeactivate: [ConfirmDeactivateGuard]
}
最后,像Angular上的所有其他服务一样,需要相应地注册此防护:
@NgModule({
...
providers: [
...
ConfirmDeactivateGuard
]
})
export class AppModule {}
您可以有多个保护单个路径的防护,这可以帮助您实现复杂的用例,其中需要一系列不同的检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.