Приложение Angular 6 после обновления перенаправляет в root - PullRequest
0 голосов
/ 20 октября 2018

У меня проблема с моим угловым приложением 6, после обновления вернитесь к корню.Я нашел, где проблема, но я не знаю, как изменить или добавить код.

import { Component, OnInit } from "@angular/core";
import * as firebase from "firebase";
import { Router } from "@angular/router";
import { UserService } from "../../service/user.service";

@Component({
  selector: "app-navbar",
  templateUrl: "./navbar.component.html",
  styleUrls: ["./navbar.component.css"]
})
export class NavbarComponent implements OnInit {
  isLoggedIn: boolean = false;
  name: string;
  email: string;
  uid: string;
  spec: string;
  constructor(private userService: UserService, private router: Router) {}

  ngOnInit() {
    this.userService.statusChange.subscribe(userData => {
      if (userData) {
        this.name = userData.name;
        this.email = userData.email;
        this.uid = userData.uid;
        this.spec = userData.spec;
      } else {
        this.name = null;
        this.email = null;
        this.uid = null;
        this.spec = null;
      }
    });

    firebase.auth().onAuthStateChanged(userData => {
      if (userData) {
        this.isLoggedIn = true;
        console.log("user is login");
        const user = this.userService.getProfile(); 
        if (user && user.name) {
          this.name = user.name;
          this.email = user.email;
          this.uid = user.uid;
          this.spec = user.spec;
        }
        this.router.navigate(["/"]);// **REFRESH PROBLEM**
      } else {
        this.isLoggedIn = false;
        console.log("user is logout");
        this.router.navigate(["/login"]);
      }
    });
  }
  onlogout() {
    firebase
      .auth()
      .signOut()
      .then(() => {
        this.userService.remove();
        this.isLoggedIn = false;
      });
  }
}

Например, если я добавлю в this.router.navigate (["/"]) некоторые из моих маршрутов, он всегда будетперенаправить к этому новому корню, но если я удалю все, он снова вернется к корню.Может быть, локальное хранилище может помочь, но я не знаю, как реализовать: (

Обновлено Модуль маршрутизации

  RouterModule.forRoot([
      {
        path: "",
        component: DashboardComponent,
        canActivate: [AuthGuardService]
      },
      { path: "login", component: LoginComponent },
      { path: "register", component: RegisterComponent },
      {
        path: "pacijent/:id",
        component: PacijentComponent,
        canActivate: [AuthGuardService]
      },

      {
        path: "pacijent/:id/edit",
        component: PacijentEditComponent,
        canActivate: [AuthGuardService]
      },
      {
        path: "novi-pacijent",
        component: NoviPacijentComponent,
        canActivate: [AuthGuardService]
      },
      {
        path: "istorija/:id/:id",
        component: NalazComponent,
        canActivate: [AuthGuardService]
      },
      { path: "**", component: NotfoundComponent }
    ])
  ],

Ответы [ 3 ]

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

Если вы хотите быть на текущей странице после обновления, используйте this.router.url

. Вы можете заменить this.router.navigate(["/"]); на this.router.navigate([this.router.url]);

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

Лучшее, что вы можете сделать, это остаться на текущем маршруте, просто поместив

this.router.navigate([""]);

Перезагрузит маршрут, но вы должны установить стратегию повторного использования на false, чтобы принудительно перезагрузить маршрут.

Если вы хотите передать любые параметры запроса вместе с ним

let params = ...; // define query params

this.router.navigate([""], params);
0 голосов
/ 20 октября 2018

"/" всегда приведет вас к корню.

Укажите правильный путь, по которому вы хотите приземлиться.

Пример:

this.router.navigate(["/dashboard"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...