Машинописный текст: можно ли использовать внутри конструктора троичный оператор или условный оператор? - PullRequest
0 голосов
/ 04 февраля 2020

Я работаю над улучшением существующего кода для веб-страницы. Когда пользователи входят в систему, я хочу, чтобы у них были разные варианты выпадающего меню. Я использую Angular, и соответствующий файл component.ts настроен аналогично этому ...

constructor () {
    this.name = this.login ? 'User' : 'Guest';
    ...
    this.list = [
        {display: this.name, value: 'name'},
        {display: this.address, value: 'address'},
        {display: this.company, value: 'company'}
    ];
} 

В приведенном выше примере вход в систему определяется вне конструктора. Отображаемое значение this.name - единственное, которое вызывает у меня проблему. Можно ли использовать троичные операторы внутри конструкторов Typescript? Если нет, то как мне настроить свое состояние для изменения отображаемого значения. Я попытался определить список за пределами конструктора, но страница не будет отображаться правильно.

1 Ответ

0 голосов
/ 04 февраля 2020

Проблема не в том, можно ли использовать внутри конструктора троичный оператор . Проблема в том, что this.login имеет только одно возможное состояние во время создания этого компонента. Тем не менее, если компонент будет визуализирован в представлении в то время, когда пользователь не вошел в него, то он никогда не изменится, когда он, наконец, войдет в систему (если вы не восстановите свой компонент).

Вместо этого, Вы можете использовать сеттер на login, чтобы:

private _login = false;

get login(): boolean {
  return this._login;
}

set login(value: boolean) {
  this._login = value;
  this.name = value ? 'User' : 'Guest';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...