我希望在我的Angular2页面上添加一些链接,当单击时,这些链接将跳转到页面中的特定位置,就像普通的hashtags所做的那样。所以链接应该是这样的
/users/123#userInfo
/users/123#userPhoto
/users/123#userLikes
等等。
我不认为我需要HashLocationStrategy,因为我对正常的Angular2方式很好,但是如果我直接添加,链接实际上会跳转到根,而不是在同一个页面上的某个地方。任何方向都很感激,谢谢。
尽管甘特的回答是正确的,但它并没有涵盖“跳转到”锚标签部分。
因此,除此之外:
<a [routerLink]="['somepath']" fragment="Test">Jump to 'Test' anchor </a>
this._router.navigate( ['/somepath', id ], {fragment: 'test'});
...在需要“跳转”行为的组件(父组件)中,添加:
import { Router, NavigationEnd } from '@angular/router';
class MyAppComponent {
constructor(router: Router) {
router.events.subscribe(s => {
if (s instanceof NavigationEnd) {
const tree = router.parseUrl(router.url);
if (tree.fragment) {
const element = document.querySelector("#" + tree.fragment);
if (element) { element.scrollIntoView(true); }
}
}
});
}
}
请注意,这是一个解决办法!请关注此github问题,以了解未来的更新。感谢Victor Savkin提供的解决方案!
很抱歉,回答有点晚;在角度布线文档中有一个预定义的函数,它可以帮助我们使用标签到页面锚定进行布线,即锚定crolling:“enabled”
Step-1:-首先导入app.module.ts文件中的RouterMoules:-
imports:[
BrowserModule,
FormsModule,
RouterModule.forRoot(routes,{
anchorScrolling: 'enabled'
})
],
步骤2:-转到HTML页面,创建导航并添加两个重要属性,如[routerLink]和fragment,以匹配相应的Div ID:-
<ul>
<li> <a [routerLink] = "['/']" fragment="home"> Home </a></li>
<li> <a [routerLink] = "['/']" fragment="about"> About Us </a></li>
<li> <a [routerLink] = "['/']" fragment="contact"> Contact Us </a></li>
</ul>
步骤3:-通过将ID名称与片段匹配来创建节/div:-
<section id="home" class="home-section">
<h2> HOME SECTION </h2>
</section>
<section id="about" class="about-section">
<h2> ABOUT US SECTION </h2>
</section>
<section id="contact" class="contact-section">
<h2> CONTACT US SECTION </h2>
</section>
为了供您参考,我通过创建一个小演示添加了下面的示例,该演示有助于解决您的问题。
演示:https://routing-hashtag-page-anchors.stackblitz.io/
最新消息
这一点现在得到了支持
<a [routerLink]="['somepath']" fragment="Test">Jump to 'Test' anchor </a>
this._router.navigate( ['/somepath', id ], {fragment: 'test'});
将以下代码添加到组件以滚动
import {ActivatedRoute} from '@angular/router'; // <-- do not forget to import
private fragment: string;
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.route.fragment.subscribe(fragment => { this.fragment = fragment; });
}
ngAfterViewInit(): void {
try {
document.querySelector('#' + this.fragment).scrollIntoView();
} catch (e) { }
}
起初的
这是一个已知问题,在https://github.com/angular/angular/issues/6595
从我的AngularJS主页,我需要滚动到另一个页面中的锚定标记。基于url,这两个页面都作为部分html进入ng视图组件。启动服务器时,会加载主页,然后需要从主页转到常见问题页面。我使用了带有#的普通href,但它没有指向目标页面中的正确div。下面是我用$anchorScroll尝试的内容 这里是控制器方法 这是我在家里使用它的方法。html 但这并不能正常工作。如果我直接加载faq页面,然后
我正在使用jQuery移动框架实现一个移动网站。但当我点击锚定标签时,页面将无法正常加载,屏幕截图中会显示一个空白的白色页面。 jQuery和jQuery移动脚本标签: 我的JSP页面: 单击锚标记后,控件进入控制器(Java),然后控制器将返回一个JSP页面;但是,会显示一个空白页。如果重新加载页面,则数据显示正确。 下一行使控件转到: 退货“/目录/m-类别-产品”; 但是第一次这个页面没有任
views.php 上面的视图代码用于显示文本和url。如果用户只发布文本,则else部分将起作用,如果用户发布文本时同时发布url,则第一个条件起作用。 如果用户发布文本,点击该文本将把用户带到另一个页面。这也适用于如果用户发布两个文本与你管网址也。点击这里的文字,应该会把他带到下一个屏幕。 问题是,如果用户将文本与YouTube url一起发布,并且文本之间存在YouTube url,则You
问题内容: 我在图像周围有一个标签。我在标签所在的div上设置了边框。我将margin和padding都设置为0,但由于某种原因,我的标签仍比我的图像高3像素。这在图像和边框之间留了一些空间,破坏了我想要完成的外观。 我究竟做错了什么?我已经在FireFox和Chrome中测试了相同的结果。谢谢 问题答案: 图像是如此,它被视为字符,位于基线上。差距是由为下降器提供的空间引起的(可以在类似j,g,
我需要更改JavaFX中标签的锚点。我将锚点描述为选择来翻译底层节点的点。默认情况下,锚点似乎是左上角。 我试图通过如下描述的附加翻译来解决这个问题: 代码应转换标签,使其像右下角的锚点一样工作。这不起作用,因为在我执行代码时,标签的边界框是[minX:0.0,minY:0.0,minZ:0.0,宽度:-1.0,高度:-1.0,深度:0.0,maxX:-1.0,maxY:-1.0,maxZ:0.0
问题内容: 如果我有以下简单代码段: 如您从小提琴中看到的:http : //jsfiddle.net/basarat/czVPG/,该按钮不可单击,并且ng- click(仅是一个jquery )不会执行。但是,它确实为锚标记执行。 是否因为禁用不是锚标记的有效属性? 如果是这样,为什么在没有按钮的情况下仍会触发dom click事件? 问题答案: 禁用不是锚标记的有效属性。来源:http :