我现在正在管理Angular项目,在尝试改进系统时遇到了一件奇怪的事情。某些元素不应显示在某些URL上。
是否可以根据Angular 5或6中的URL隐藏元素?
我想了解实现这一目标的最佳体验。
例如,domain.com / 主页,domain.com / 软件包等。
答案 0 :(得分:2)
在角度上,我们通常会创建越来越少的方向性指令,因为零件支脚占外壳的90%。但这是典型的情况,您需要创建一个:)。
1-创建指令注入路由器:
import { ActivatedRoute } from '@angular/router';
@Input() url : string;
constructore(private router: Router){
router.events.subscribe( (event) => {
// I think you can see the route change here :)
});
}
从这里您将能够知道您的路线。
2-现在是否隐藏?
您还可以注入templateRef和containerRef来与DOM一起玩。
import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';
constructore(private route: Router,
private templateRef: TemplateRef<any>,
private viewContainer: ViewContainerRef){
}
3-完成:
if (this.url // On a good URL show the content) {
this.viewContainer.createEmbeddedView(this.templateRef);
} else {
this.viewContainer.clear();
}
}
4-您只需在要管理的元素上添加此指令