#javascript #angular #typescript #angular-routing #angular-router
#javascript #angular #typescript #angular-маршрутизация #angular-маршрутизатор
Вопрос:
У меня есть функция, которая перенаправляет на другую страницу, я хочу, чтобы после перенаправления перенаправленная страница также перезагружалась.
Я хочу перезагрузить страницу входа после перенаправления на нее. используя ‘window.location.reload()’ перезагружает текущую страницу, которая является домашней страницей, но не страницей входа. Как перезагрузить специальную страницу?
HomeComponent.ts
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup, FormBuilder, FormControl, Validators, Form } from '@angular/forms';
import { LoginComponent } from '../authentification/login/login.component';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
ngOnInit(): void {
}
constructor(private router: Router) { }
redirection(){
this.router.navigate(['/login']);
}
}
Ответ №1:
Почему бы вам не использовать
redirection(){
window.location.href="yourpagedomain/login"
}
это загрузит страницу.
Комментарии:
1. это работает для любого компонента, который перенаправляет на страницу входа? что, если у меня есть другой компонент home2, который я хочу перенаправить на login, но не перезагрузить login? Также не могли бы вы дать мне весь код функции redirection() для окна метода 1. location.href=»ваша ссылка для входа» ‘ ? Заранее благодарю тебя, друг 🙂
2. затем в компоненте home2 вы будете использовать this.router.navigate([‘/login’]);
Ответ №2:
На своей странице входа в систему вы можете перехватить событие navigate, а затем, если оно верно, вы можете перезагрузить свою форму. Я надеюсь, что это поможет вам :
На вашей странице входа в систему:
СТАРЫЙ : неправильный код
export class LoginPage implements OnInit {
constructor(private router: Router) {
router.events.subscribe(val => {
if (val) {
this.refreshForm(); // Refresh your form
}
});
}
ngOnInit(): void {
}
}
РЕДАКТИРОВАТЬ : этот код работает :
export class LoginPage implements OnInit {
constructor(private router: Router) {
router.events.pipe(
filter((events: RouterEvent) => events instanceof NavigationEnd),
).subscribe((val) => {
if (val.url === 'LoginPage Url') { // Fill with your loginPage Url (eg. /tabs/tab1)
this.refresh(); // Refresh your form
}
});
}
ngOnInit(): void {
}
}
Комментарии:
1. где вы поймали функцию перенаправления в коде? не понял :/
2. router.events.subscribe(val => { if (val) { this.refreshForm(); // Обновить вашу форму } });
3. это работает для любого компонента, который перенаправляет на страницу входа? что, если у меня есть другой компонент home2, который я хочу перенаправить на login, но не перезагрузить login?
4. это приведет к перехвату события навигации. Если значение равно true, вы можете использовать функцию для сброса полей формы.
5. Это работает только для страницы, на которой находится этот код. (извините за то, что я пишу по-английски)