【发布时间】:2018-05-01 16:00:44
【问题描述】:
我正在尝试制作一个设置按钮,该按钮可以根据用户当前正在查看的组件动态更改其内容。我不确定这样做的标准做法是什么。我认为正确的方法是使用某种类型的内置角度指令,告诉我当前正在使用哪个路由器链接,然后在设置组件模板中使用它来使用 *ngIf 更改 DOM。我可以阅读 URL 并这样做,但它似乎不正确。我想我可以在每个组件中放置一个“isAlive”标志,但对于大多数网站来说,这似乎是一项非常标准的工作,所以我猜这也不是正确的解决方案。有代码示例的建议吗?
这里是一个示例父组件模板(app组件)
<nav ="navbar navbar-toggleable-md navbar-inverse bg-primary fixednav">
<li class="nav-item">
<a class="nav-link" routerLink="/checklist" routerLinkActive="active">
Checklist
</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="/otherComponent" routerLinkActive="active">
OtherComponent
</a>
</li>
</nav>
这是我说的设置模板。
<div *ngIf="someRouterThing.checklistComponent.Active" class="settings">
<div class="panel-body navbar navbar-inverse bg-primary">
<!-- Rounded switches -->
<div>
<label class="switch">
<input type="checkbox" [checked]="checklistSettings.hideCheckedEnabled" (change)="toggleHideChecked()">
<span class="slider round"></span>
</label> Hide Checked
</div>
<div>
<label class="switch">
<input type="checkbox" [checked]="checklistSettings.hideHiddenEnabled" (change)="toggleHideHidden()">
<span class="slider round"></span>
</label> Hide Hidden
</div>
</div>
</div>
<div *ngIf="someRouterThing.otherComponent.Active class="settings">
todo- add settings stuff that is different from above
</div>
【问题讨论】:
-
我建议使用路由器插座。有关路由,请参阅Angular documentation。
-
@ConnorsFan 我确实在 appcomponent 中使用了路由器插座。但这是我可以用来告诉“使用哪个组件代替
”的东西。这就是我需要知道的,以便我可以根据用户所在的组件更改设置菜单 -
可以通过处理路由器出口的
activate事件来知道加载了哪个组件,如this answer所示。不知道这是否是你想要的...... -
@ConnorsFan 大概就是这样。你想写一个答案让我接受吗?我明天试试看。
-
你有机会尝试一下吗?
标签: javascript html angular