当被路由到所需的location#fragment时,Angular viewportScroller第一次不工作可能是由于以下原因之一:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule, Routes, Scroll } from '@angular/router';
import { ViewportScroller } from '@angular/common';
const routes: Routes = [
// 路由配置
];
@NgModule({
imports: [BrowserModule, RouterModule.forRoot(routes, {
scrollPositionRestoration: 'enabled'
})],
providers: [ViewportScroller],
exports: [RouterModule]
})
export class AppRoutingModule {}
如果以上解决方法都无效,可以尝试以下替代方案:
import { Component } from '@angular/core';
import { Location } from '@angular/common';
@Component({
selector: 'app-my-component',
template: `
<!-- 组件模板 -->
`
})
export class MyComponent {
constructor(private location: Location) {}
scrollToFragment(fragment: string): void {
const element = document.getElementById(fragment);
if (element) {
element.scrollIntoView();
}
}
navigateToFragment(fragment: string): void {
this.location.go(`#${fragment}`);
this.scrollToFragment(fragment);
}
}
import { Component, ElementRef } from '@angular/core';
@Component({
selector: 'app-my-component',
template: `
<!-- 组件模板 -->
`
})
export class MyComponent {
constructor(private elementRef: ElementRef) {}
scrollToFragment(fragment: string): void {
const element = this.elementRef.nativeElement.querySelector(`#${fragment}`);
if (element) {
element.scrollIntoView();
}
}
}
以上是解决Angular viewportScroller第一次不工作的一些可能原因和替代方案。根据具体情况选择适合的解决方法,并根据需要进行调整和优化。对于更多关于Angular的信息和帮助,可以参考腾讯云的Angular产品介绍页面:Angular产品介绍。
领取专属 10元无门槛券
手把手带您无忧上云