Как получить компонент для чтения в свойстве Angular? - PullRequest
0 голосов
/ 10 июля 2019

Я хочу отобразить кнопку переключения на основе свойства showID в компоненте Angular.Этот компонент использует службу, и всякий раз, когда страница инициализируется (ngOnInit), свойству showID присваивается любое значение в службе.

Я использую сервис, потому что мое приложение передает данные между «страницей формы ввода» и страницей «настроек».Кнопки переключения используются для определения того, какие поля (например, имя, возраст, пол) будут отображаться в форме ввода.

В моем сервисе я установил для showID значение false.Когда компонент настроек загружается, он устанавливает свое свойство OWN с именем showID равным тому, что возвращает служба.Однако, несмотря на то, что консоль регистрирует правильное значение showID, кнопка переключения все еще имеет значение «true», и я не могу понять, как сделать так, чтобы она была ложной, без жесткого кодирования.

export class FormService {
  showID: boolean = false;
}

// In my Settings component:
export class SettingsPage implements OnInit {
  showID: boolean;

constructor(
    private formService: FormService
  ) { }

ngOnInit() {
    this.showID = this.formService.getShowID();
}

// In my Settings HTML:
<ion-toggle checked="showID" (ionChange)="changeShowID()"></ion-toggle>

Я ожидаюпереключатель должен быть выключен, но он включен, даже если значение службы равно false.

1 Ответ

0 голосов
/ 10 июля 2019

Вы вызываете свой сервис один раз в OnInit, значит только во время инициализации компонента.Ваш сервис может иметь правильное значение, но ваша переменная не имеет его, потому что он присваивается ему только один раз.Вам нужно будет переназначать его каждый раз, когда он изменяется так, как вы это делаете сейчас.Вы можете использовать для связи между компонентами, например, EventEmitters или поместить Observable в ваш сервис, который выдает следующее значение, когда вы переключаетесь и подписываетесь на Observable в вашем компоненте.

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