我想要实现的是点击并平滑滚动到底部/指定的div区域,我用hashtag定义它,就像我认为它应该是这样.

下面是w3school示例中的一个实时示例,它是为JQuery:https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_eff_animate_smoothscroll编写的

我所做的就是从这个答案中窥视:Angular2 Routing with Hashtag to page anchor

但我不太明白答案,答案是这样的:

这部分是HTML部分:

<a [routerLink]="['somepath']" fragment="Test">Jump to 'Test' anchor </a>

下面是路由.我应该把代码放在哪里?组成部分是吗?但是我如何访问这个功能呢?我应该执行(单击)吗?

this._router.navigate( ['/somepath', id ], {fragment: 'test'});

在这下面,我得到了它,它应该写在我的组件中.ts:

** Add Below code to your component to scroll**

  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) { }
  }

"somepath"是什么意思?我应该在我的路由中添加一条路由.是吗?通常,我会在这里添加一条新路径,例如:

export const routes: Routes = [
  { path: '', redirectTo: '/home', pathMatch: 'full' },
  { path: 'product', redirectTo: '/product' },
  ...homeRoutes,
  ...productRoutes
];

有人能给我提供HTML、routes和component的完整示例代码吗?

推荐答案

我正在寻找一个类似的解决方案,并试图使用ngx-scroll-to软件包,发现它在angular(angular 6+)的最新版本中不起作用,因此决定研究其他选项,并找到了一个使用浏览器native scrollIntoView的解决方案,这似乎是迄今为止最好的解决方案

HTML代码:

<button (click)="scrollToElement(target)"></button>
<div #target>Your target</div>

Ts代码:

scrollToElement($element): void {
    console.log($element);
    $element.scrollIntoView({behavior: "smooth", block: "start", inline: "nearest"});
  }

Typescript相关问答推荐

如何创建泛型类型组件来使用React Native的FlatList或SectionList?'

如何使用函数填充对象?

获取函数中具有动态泛型的函数的参数

Express Yup显示所有字段的所有错误

如何将别名添加到vitest配置文件?

以Angular 执行其他组件的函数

类型脚本-处理值或返回值的函数

如何在Reaction 18、Reaction-Rout6中的导航栏中获取路由参数

在Google授权后由客户端接收令牌

如何在Reaction Native中关注屏幕时正确更新状态变量?

如何在TypeScrip中使用数组作为字符串的封闭列表?

为什么受歧视的unions 在一种情况下运作良好,但在另一种非常类似的情况下却不起作用?

Typescript不允许在数组中使用联合类型

参数未映射泛型返回类型

JSX.Element';不可分配给类型';ReactNode';React功能HOC

递归JSON类型脚本不接受 node 值中的变量

可选通用映射器函数出错

req.files = 未定义(Multer、Express、Typescript)

node_modules/@newrelic/native-metrics:命令失败. node_modules/couchbase:命令失败.退出代码:127

如何解决 Angular 中的 ts(18048) 错误