Я пробовал большинство из этих решений, но столкнулся с проблемами, которые уходили и возвращались с другим фрагментом, и это не сработало, поэтому я сделал что-то немного другое, что работает на 100%, и избавляется от уродливого хэша в URL.
tl; dr вот лучший способ, чем то, что я видел до сих пор.
import { Component, OnInit, AfterViewChecked, OnDestroy } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs/Subscription';
@Component({
selector: 'app-hero',
templateUrl: './hero.component.html',
styleUrls: ['./hero.component.scss']
})
export class HeroComponent implements OnInit, AfterViewChecked, OnDestroy {
private fragment: string;
fragSub: Subscription;
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.fragSub = this.route.fragment.subscribe( fragment => { this.fragment = fragment; })
}
ngAfterViewChecked(): void {
try {
document.querySelector('#' + this.fragment).scrollIntoView({behavior: 'smooth'});
window.location.hash = "";
} catch (e) { }
}
ngOnDestroy() {
this.fragSub.unsubscribe();
}
}
Скорее всего, вы не добавляете значок в library
из пакета @fortawesome/fontawesome-svg-core
для использования компонентом.
import Vue from "vue";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { library } from "@fortawesome/fontawesome-svg-core";
import { faSpinner } from "@fortawesome/free-solid-svg-icons";
Vue.component("font-awesome-icon", FontAwesomeIcon);
library.add(faSpinner);
Как только вы это сделаете, вам больше не нужно указывать классы. Поэтому, если вам нужен значок счетчика, который вращается , имеет 3x большой размер и фиксированной ширины - вам следует сделать следующее.
<font-awesome-icon
icon="spinner"
size="3x"
spin fixed-width>
</font-awesome-icon>
Ссылка :