我在进行 Ionic 3 到 4 迁移时遇到了困难。官方迁移指南要求我们使用"适当的 Angular 替代方案"。谁能告诉我以下 Ionic 3 生命周期钩子的等效 Angular 生命周期钩子替代品。
- ionViewDidLoad
- ionViewWillEnter [未替换]
- ionViewDidEnter [未替换]
- ionViewWillLeave [未替换]
- ionViewDidLeave [未替换]
- ionViewWillUnload
- 离子视图可以输入
- 离子视图可以离开
请帮助我将上述内容与
- ngOnChanges()
- ngOnInit()
- ngDoCheck()
- ngAfterContentInit()
- ngAfterContentChecked()
- ngAfterViewInit()
- ngAfterViewChecked()
- ngOnDestroy()
编辑:我确实浏览了Ionic 4路由器出口文档。
ionViewDidLoad => ngOnInit()
ionViewWillUnload => ngOnDestroy()
来自 角度文档 :
ngOnInit()
在 Angular 首先显示数据绑定属性并设置指令/组件的输入属性后初始化指令/组件。ngOnDestroy()
在Angular 销毁指令/组件之前进行清理。取消订阅可观察量并分离事件处理程序以避免内存泄漏。
对于ionViewCanEnter()和ionViewCanLeave(),您必须按照文档中的建议使用路由器防护。例如。如果要保护路由免受未经身份验证的用户的攻击,则必须首先创建服务文件以检查身份验证
import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (isAuthenticated) {
// logged in so return true
return true;
}
// not logged in so redirect to login page with the return url
this.router.navigate(['/login']);
return false;
}
}
然后在路由路径中使用 canActivate 属性中的服务:
{path:'home',component:HomeComponent,canActivate:[AuthGuard]}
- ionViewDidLoad 被 ngOnInit 取代
- ionViewWillEnter [未替换]
- ionViewDidEnter [未替换]
- ionViewWillLeave [未替换]
- ionViewDidLeave [未替换]
- ionViewWillUnload 由 ngOnDestroy 取代
- ionViewCanEnter 由 CanActivate 取代
- ionViewCanLeave 替换为 CanDeactivate