【问题标题】:How show/hide links in another component?如何在另一个组件中显示/隐藏链接?
【发布时间】:2019-02-16 14:17:12
【问题描述】:

我在Angular中有以下主要组件app.component的结构:

<div class="links">
    <div class="link_1"></div>
    <div class="link_2"></div>
</div>
<router-outlet></router-outlet>

所以在&lt;router-outlet&gt;&lt;/router-outlet&gt; 中替换了不同的组件。

如果&lt;router-outlet&gt;&lt;/router-outlet&gt;内部有组件,如何隐藏&lt;div class="link_1"&gt;&lt;/div&gt;作为实例EventComponent

如果它是另一个组件,如何显示&lt;div class="link_2"&gt;&lt;/div&gt;,不管是哪个。我想知道如何显示/隐藏上面的菜单元素取决于下面的当前组件。

我不想在每个组件中创建变量public show = true;

【问题讨论】:

    标签: angular


    【解决方案1】:

    尝试将路由器包含在带有路由器插座的组件中,并查找与所选链接对应的路径,例如

    constructor(private _router: Router ) {}
    
    get currentUrl() { return this._router.url; }
    

    然后在你的模板中

    <div *ngIf="currentUrl !== 'someUrl'" class="link_1"></div>
    

    【讨论】:

    • 是好的做法还是更好地使用全球服务? Angular 是否提供有关当前正在使用的组件的信息?
    • 可能只是个人喜好,但你也可以使用服务;只需在要跟踪的每个组件中设置路由当前激活的服务中的属性,然后在容器组件中读取该值以更改哪些链接处于活动状态。通常只查看路由更简单,因为它不需要向路由组件添加新服务或任何代码,并且根据您需要跟踪的内容,它将使您的代码库更简单
    • 问题是我有一个组件,主组件中有菜单项。它也可以是同一页面上的一些嵌套组件。根据哪个是活动的,我需要在另一个组件中显示/隐藏菜单项。
    • 如果您无法通过查看路由来确定哪个组件处于活动状态,那么是的,您需要创建一个服务并将其注入每个可能影响显示/隐藏决策的组件中更新。您可能还需要使用 ngOnInit 和 ngOnDestroy 来确保您的服务变量在组件加载和卸载时是最新的
    • 如何与类似标记比较:*ngIf="currentUrl !== 'list/{id}'" class="link_1"
    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多