angular: перезагрузить страницу после перенаправления

#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. Это работает только для страницы, на которой находится этот код. (извините за то, что я пишу по-английски)