LoginSignup
7
7

More than 3 years have passed since last update.

Angularでの同一ページ内アンカー設定方法

Last updated at Posted at 2019-08-20

Angularでの同一ページ内アンカー設定方法

とても簡単な話だが、普通の方法だと(以下)動かない。

<a href="#abc">ジャンプ元</a>

<span id="abc">ジャンプ先</span>

というかhttps://ドメイン名/#abc へジャンプしてしまう。

ActivateRouterを使う方法があるようだがメンドクサイ~~~~

で、一番簡単な方法。ngx-page-scrollモジュールをインストールしてしまう。
※ただしその前にcoreのインストールが必要

npm install ngx-page-scroll-core --save
npm install ngx-page-scroll --save



そしたらいつものようにapp.module.tsに追記。

import { NgxPageScrollCoreModule } from 'ngx-page-scroll-core';
import { NgxPageScrollModule } from 'ngx-page-scroll';

@NgModule({
    imports: [
        /* Other imports here */
        NgxPageScrollCoreModule
        NgxPageScrollModule
        ]
})


これだけ。
実際に使用するページのコンポネントの方、***-component.tsのほうはまったく触る必要なし。

そしてHTMLのほうを・・・

<a pageScroll href="#abc">ジャンプ元</a>

<span id="abc">ジャンプ先</span>

このようにジャンプ元のほうにpageScrollの単語一つ入れるだけ。

ああ…簡単で良かった:relaxed:

※ スクロールスピードなど細かい調整をしたい場合はngx-page-scroll-coreをインストールする必要があります。


当方環境Angular7

package.json
//package.json
{
  "name": "benzoinfojapan",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~7.1.0",
    "@angular/cdk": "^7.3.4",
    "@angular/common": "~7.1.0",
    "@angular/compiler": "~7.1.0",
    "@angular/core": "~7.1.0",
    "@angular/fire": "^5.1.3",
    "@angular/flex-layout": "^7.0.0-beta.24",
    "@angular/forms": "~7.1.0",
    "@angular/material": "^7.3.4",
    "@angular/platform-browser": "~7.1.0",
    "@angular/platform-browser-dynamic": "~7.1.0",
    "@angular/pwa": "^0.13.5",
    "@angular/router": "~7.1.0",
    "@angular/service-worker": "~7.1.0",
    "core-js": "^2.5.4",
    "firebase": "^5.11.1",
    "firebase-admin": "^7.3.0",
    "firebase-functions": "^2.3.1",
    "firebaseui": "^3.6.1",
    "firebaseui-angular": "^3.4.1",
    "hammerjs": "^2.0.8",
    "igniteui-angular": "^7.3.0",
    "ngx-page-scroll": "^7.0.0",
    "ngx-page-scroll-core": "^7.0.0",
    "rxjs": "~6.3.3",
    "tslib": "^1.9.0",
    "web-animations-js": "^2.3.1",
    "zone.js": "~0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.13.9",
    "@angular/cli": "~7.1.4",
    "@angular/compiler-cli": "^7.2.15",
    "@angular/language-service": "~7.1.0",
    "@types/jasmine": "~2.8.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.5.0",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~3.1.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~1.1.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.11.0",
    "typescript": "~3.1.6"
  }
}


参考:ngx-page-scroll


7
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7