Has*_*aza 3 typescript angular
我们知道 angular 中有一个 ngOnDestroy() 方法可以在销毁组件时运行,但我想知道有什么方法可以防止它被销毁?
该CanDeactivate后卫先后获得活性成分的情况下,这样你就可以实现hasChanges()是检查,如果已经出现了变化,并有条件地请假前的用户确认。在以下示例中,CanDeactivateComponent实现了方法hasChanges (),该方法返回一个布尔值,指示组件是否检测到任何更改。CanDeactivate守卫的实现类似于CanActivate守卫 implelementaion(你可以创建一个函数,或者一个实现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;
}
}
Run Code Online (Sandbox Code Playgroud)
尽管这是一个非常简单的实现,CanDeactivate使用泛型,因此您需要指定要停用的组件类型。
在组件的 Angular 路由器中:
{
path: '',
component: SomeComponent,
canDeactivate: [ConfirmDeactivateGuard]
}
Run Code Online (Sandbox Code Playgroud)
最后,与 Angular 上的所有其他服务一样,这个守卫需要相应地注册:
@NgModule({
...
providers: [
...
ConfirmDeactivateGuard
]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
您可以有多个守卫保护一条路线,这有助于您实现复杂的用例,其中需要一系列不同的检查。
| 归档时间: |
|
| 查看次数: |
4834 次 |
| 最近记录: |