Angular 是否有中断(停止)组件生命周期的选项
我正在angular应用程序中进行RBAC实现。我想中断(停止)组件生命周期和组件模板(以及子组件/模板)的呈现。如果用户没有授权。 我已经创建了用于管理UI行为的指令,但我也想停止.ts代码的执行。 我是否有任何选项,或者可以从父组件限制或覆盖子组件生命周期Angular 是否有中断(停止)组件生命周期的选项,angular,Angular,我正在angular应用程序中进行RBAC实现。我想中断(停止)组件生命周期和组件模板(以及子组件/模板)的呈现。如果用户没有授权。 我已经创建了用于管理UI行为的指令,但我也想停止.ts代码的执行。 我是否有任何选项,或者可以从父组件限制或覆盖子组件生命周期 我正在实现授权,希望在加载组件之前检查用户详细信息,以避免执行typescript代码。我已尝试使用基本服务来检查和限制它。Angular提供在加载组件之前执行此类检查 按如下所示创建Guard: export class AccessG
我正在实现授权,希望在加载组件之前检查用户详细信息,以避免执行typescript代码。我已尝试使用基本服务来检查和限制它。Angular提供在加载组件之前执行此类检查 按如下所示创建Guard:
export class AccessGuard implements CanActivate {
constructor() { }
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean> | Promise<boolean> | boolean {
// Check if user is entitled, then return true otherwise return false.
}
}
HTH.请创建类似demo.resolver.ts的解析器
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/delay';
@Injectable()
export class DemoResolver implements Resolve<Observable<string>> {
constructor() {}
resolve() {
return Observable.of('Hello Alligator!').delay(2000);
}
}
//Routes
import { DemoResolver } from './demo.resolver';
{
path: 'top',
component: TopComponent,
resolve: { message: DemoResolver }
}
从'@angular/core'导入{Injectable};
从'@angular/router'导入{Resolve};
从“rxjs/Observable”导入{Observable};
导入“rxjs/add/observable/of”;
导入“rxjs/add/operator/delay”;
@可注射()
导出类DemoResolver实现解析{
构造函数(){}
解决(){
返回可观察到的('Hello Alligator!')。延迟(2000);
}
}
//路线
从“./demo.resolver”导入{DemoResolver};
{
路径:“顶部”,
组件:TopComponent,
解析:{消息:DemoResolver}
}
因此,您可以在加载组件之前获取数据并检查条件
在解析器中,您可以调用API或任何您想要的东西。这将对您有所帮助。我同意路线警卫的意见,但这将有助于保护整个路线。我们希望将用户限制在单个子组件级别,这意味着用户可能有权访问路由,但无权查看/编辑路由的特定子组件。我们将在单独的服务中维护授权详细信息。“我正在实施授权,并希望在加载组件之前检查用户详细信息”-我将使用路由器和路由防护装置进行检查。我同意路由防护装置,但这将有助于保护完整的路由。我们希望将用户限制在单个子组件级别,这意味着用户可能有权访问路由,但无权查看/编辑路由的特定子组件。我们在单独的服务中维护授权详细信息。
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/delay';
@Injectable()
export class DemoResolver implements Resolve<Observable<string>> {
constructor() {}
resolve() {
return Observable.of('Hello Alligator!').delay(2000);
}
}
//Routes
import { DemoResolver } from './demo.resolver';
{
path: 'top',
component: TopComponent,
resolve: { message: DemoResolver }
}