Angular 6 Перенаправление на компонент запуска приложения, если пользователь изменил свой пароль с помощью navigateByUrl не работает - PullRequest
0 голосов
/ 25 октября 2018

Я в настоящее время нахожусь по следующему адресу моего приложения angular 6:

http://localhost:4200/dashboard/admin/users

Если администратор изменил свои учетные данные, мне нужно перенаправить его на компонент входа еще раз.

this.auth.updateCredentials(credentials).subscribe(
  (data) => {
    if (data == "success") {
      this.showError = false;
      if (credentials['user_id'] == this.loggedUser) {
        //Redirect
        localStorage.setItem('jwt', '')
        localStorage.setItem('user_id', '')
        localStorage.setItem('user_role', '')
        this.router.navigateByUrl('login');
      } else {
        this.dialogRef.close();
      }
    }
    if (data == "error") {
      this.showError = true;
    }

  },
  (error) => {
    this.showError = true;
    console.log(error);
  }
);

Я пытался this.router.navigateByUrl('login');, this.router.navigateByUrl('/login');

, но без ошибок и без перенаправлений

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

импорт-импорт {Router} из '@ angular / router';и в конструкторе приватный маршрутизатор: Маршрутизатор

Если вы передаете свой запрос на обслуживание как json, тогда ваш код похож на

this.auth.updateCredentials(credentials).subscribe(
  (data) => {
    if (data) {
      this.showError = false;
      if (credentials['user_id'] == this.loggedUser) {
        //Redirect
        localStorage.setItem('jwt', '')
        localStorage.setItem('user_id', '')
        localStorage.setItem('user_role', '')
         this.router.navigate(['your link']).then(() => {
                  your toaster
                });
      } else {
        this.dialogRef.close();
      }
    }
    if (data == "error") {
      this.showError = true;
    }

  },
  (error) => {
    this.showError = true;
    console.log(error);
  }
);

И если вы не анализируете свои данные в json заранее, тогдаВы должны сделать это

this.auth.updateCredentials(credentials).subscribe(
  (data) => {
    if (data['status'] == 200) {
      this.showError = false;
      if (credentials['user_id'] == this.loggedUser) {
        //Redirect
        localStorage.setItem('jwt', '')
        localStorage.setItem('user_id', '')
        localStorage.setItem('user_role', '')
        this.router.navigate(['your link']).then(() => {
                    your toaster
      } else {
        this.dialogRef.close();
      }
    }
    if (data == "error") {
      this.showError = true;
    }

  },
  (error) => {
    this.showError = true;
    console.log(error);
  }
);
0 голосов
/ 25 октября 2018

, если вы используете

import { Router } from '@angular/router'

, убедитесь, что он указан в вашем конструкторе как

constructor(private _router: Router) {}

и используйте косую черту для указания маршрута

 this._router.navigateByUrl("/login")

возможно, это то, чего вам не хватает.Надеюсь, это поможет.

0 голосов
/ 25 октября 2018

Попробуйте это:

constructor(..., private router: Router, ...) {}
...
this.router.navigate(['/login']);
...
...