angular - Angular 6:从组件单击会导致 href 值添加到 URL
问题描述
我是 Angular 的新手,遇到了以下问题:
我有一个标签式 UI
我的链接:
<li>
<a href="#referrals" id="tab-opinions" data-toggle="tab" target="_self" #referrals>
<span class="visible-xs"><i class="fa fa-home"></i></span>
<span class="hidden-xs">Referrals</span>
</a>
</li>
<li>
<a href="#opinions" id="tab-opinions" data-toggle="tab" target="_self" #opinions>
<span class="visible-xs"><i class="fa fa-home"></i></span>
<span class="hidden-xs">Opinions</span>
</a>
</li>
对应标签内容:
<div class="tab-pane" id="referrals">
<referral-list [data]="data"></referral-list>
</div>
<div class="tab-pane" id="opinions">
<doctor-opinion-list [data]="data"></doctor-opinion-list>
</div>
在我的组件中:
@ViewChild("opinions") private opinions;
@ViewChild("referrals") private referrals;
...
...
/* Highlights a particular tab with given id */
highlightTab(tabId) {
if (["referrals"].indexOf(tabId) > -1) {
this.referrals.nativeElement.click();
} else if (["opinions"].indexOf(tabId) > -1) {
this.opinions.nativeElement.click();
}
}
当前网址是:
/dashboard/patient/view/1
如果我单击选项卡本身,一切正常。但是如果我使用这样的语句:
highlightTab('referrals');
它将 URL 更改为:
http://localhost:4200/#referrals
我在这里做错了什么?还需要什么代码吗?
解决方案
你不应该使用 href 它将重新加载页面使用片段并确保在 routerModule 中启用锚滚动
路由器模块.ts
RouterModule.forRoot(routes, {
anchorScrolling: 'enabled'
})
组件.html
<li>
<a [fragment]="'referrals'" id="tab-opinions" data-toggle="tab" target="_self" #referrals>
<span class="visible-xs"><i class="fa fa-home"></i></span>
<span class="hidden-xs">Referrals</span>
</a>
</li>
<li>
<a [fragment]="'opinions'" id="tab-opinions" data-toggle="tab" target="_self" #opinions>
<span class="visible-xs"><i class="fa fa-home"></i></span>
<span class="hidden-xs">Opinions</span>
</a>
</li>
注入 Router 并使用 navigate 方法在路由之间导航,而不是使用 ViewChild
constructor( private router: Router ) {}
}
highlightTab(tabId) {
if (["referrals"].indexOf(tabId) > -1) {
this.router.navigate( [ 'path name' ], { fragment: 'referrals' } )
} else if (["opinions"].indexOf(tabId) > -1) {
this.router.navigate( [ 'path name' ], { fragment: 'opinions' } )
}
}
推荐阅读
- ruby-on-rails - 为什么我的辅助数据库不能在生产中连接?
- javascript - (节点:23) UnhandledPromiseRejectionWarning:错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头
- python - 如何在html和python中将文本向下追加
- audio - 如何在 Gstreamer 中动态交换左/右音频输出
- python - 如何根据类型分隔列表值 - Python
- css - 如何在所有浏览器中使 figcaptions 遵循图像的(未知)宽度
- google-cloud-platform - 如何从 Google Cloud Firestore 下载大量文档?
- regex - 正则表达式解析字符串中的国家/地区
- javascript - 我们可以让变量在 Javascript 中作为 getter 工作吗?
- html - 将鼠标悬停在类的 [li] 元素上