Невозможно обновить компонент Navbar без обновления всей страницы в angular - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть Navbar, который имеет следующие элементы:

Добро пожаловать

Администратор

О

Источник

Логин

I have attached a picture of the navbar

В первый раз, когда пользователь собирается войти в систему, значение для входа «Login» и когда пользователь переходит к компоненту приветствия (или любому другому компоненту) ) значение для входа в систему должно измениться на переданное имя пользователя. Но при переходе к компоненту приветствия значение для входа в систему на панели навигации не изменяется и по-прежнему отображается «Логин». Только когда я обновляю sh страницу, отображается имя пользователя. Не могу понять, что не так

Ниже я сделал следующее:

navbar.component. html

    <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria- 
         expanded="false">{{username}}<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li class="active"><a (click)="logout()">Logout</a></li>
        </ul>
      </li>
    </ul>

navbar.component.ts

     constructor(http: Http, public router: Router, private authService: AuthService) {
    this.username = localStorage.getItem('username');

    this.authService.UserName.subscribe(value =>{this.username = value;});
    console.log(this.username)

Login.component.ts

      return this.authService.login(this.model.username, encrypted.toString())
        .subscribe(res => {
          this.authService.UserName.next("xyz");
            this.cdr.detectChanges();
            console.log(this.authService.UserName)

}

authentication.service

   public login(username: string, password: string) {
    let authHeader = new Headers({ 'Content-Type': 'application/json' });
    let body = JSON.stringify({ username: username, password: password });
    return this.http.post(this.endPoint.AuthenticationUrl, body, { headers: authHeader })
        .pipe(map((response: Response) => {

            this.username = response.json().username;
            localStorage.setItem('username', this.username);
        },
        (err) => {this.handleError; }));
}

Я пробовал взаимодействие компонентов и обнаружение изменений. Я уверен, что что-то упустил, но не уверен, что это такое. Любая помощь будет оценена.

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