如何通过自定义指令访问 routerLink 值?
How can access to routerLink value via custom directive?
我如何创建自定义指令(例如 appCheckPermission )来检查用户是否可以查看 link 或基于应用于该元素的 routerLink 的按钮。
<button [routerLink]="['/users/edit', userId]" appCheckPermission ></button>
p.s:
有一个 属性 保存路由器link 值
nativeElement.attributes["ng-reflect-router-link"].value
但无法通过自定义指令访问。
它应该可以作为 Input
属性 访问并且在生命周期挂钩中
@Directive({ selector: '[appCheckPermission]' })
export class AppCheckPermissionDirective implements OnInit {
@Input() routerLink: any;
ngOnInit(): void {
console.log(this.routerLink);
}
...
}
您可以在 ngOnChanges
生命周期钩子中的指令中访问路由器 link。
import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';
@Directive({
selector: '[appCheckPermission]',
})
export class CheckPermissionDirective implements OnChanges {
@Input() routerLink: any;
constructor() {}
ngOnChanges(changes: SimpleChanges) {
if (changes && changes.routerLink) {
console.log(changes.routerLink.currentValue);
}
}
}
我如何创建自定义指令(例如 appCheckPermission )来检查用户是否可以查看 link 或基于应用于该元素的 routerLink 的按钮。
<button [routerLink]="['/users/edit', userId]" appCheckPermission ></button>
p.s: 有一个 属性 保存路由器link 值
nativeElement.attributes["ng-reflect-router-link"].value
但无法通过自定义指令访问。
它应该可以作为 Input
属性 访问并且在生命周期挂钩中
@Directive({ selector: '[appCheckPermission]' })
export class AppCheckPermissionDirective implements OnInit {
@Input() routerLink: any;
ngOnInit(): void {
console.log(this.routerLink);
}
...
}
您可以在 ngOnChanges
生命周期钩子中的指令中访问路由器 link。
import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';
@Directive({
selector: '[appCheckPermission]',
})
export class CheckPermissionDirective implements OnChanges {
@Input() routerLink: any;
constructor() {}
ngOnChanges(changes: SimpleChanges) {
if (changes && changes.routerLink) {
console.log(changes.routerLink.currentValue);
}
}
}