Почему переменная-член, которая инициализируется в конструкторе, не будет определена в ngInit в ionic / angular? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть модал, состоящий из формы, которая связана с экземпляром "Foo". Во время построения модальной, foo установлен правильно. Я дважды проверил оба, используя точки останова и console.log. Однако в любое время после конструктора this.foo равно undefined.

-

РЕДАКТИРОВАТЬ: я нашел решение, но мой вопрос остается в силе. Мое решение состояло в том, чтобы переместить мое назначение foo в ngOnInit() вместо конструктора.

-

Шаблон:

<ion-header>
    <ion-toolbar>
      <ion-title>New Foo</ion-title>
    </ion-toolbar>
  </ion-header>

  <ion-content>
    <ion-list>
      <ion-item>
        <ion-input placeholder="Name" [(ngModel)]="foo.name"></ion-input>
      </ion-item>
      <!-- etc... -->
    </ion-list>

    <ion-button expand="block" color="primary" (click)="create()">
      Create
    </ion-button>
</ion-content>

Компонент:

export class FooModalComponent implements OnInit {

  foo: Foo = new Foo();

  constructor(
    private modalController: ModalController,
    private navParams: NavParams
  ) { 
    const inputFoo = this.navParams.get("foo");

    if (inputFoo) {
      // this shouldn't matter, as foo would have to be truthy (not undefined)
      this.foo = inputFoo;
    }

    // logs this.foo as expected
    console.log(this.foo);
  }

  ngOnInit() {
    // logs: undefined
    console.log(this.foo);
  }

  close() {
    this.modalController.dismiss();
  }

  create() {
    this.modalController.dismiss(this.foo);
  }
}

Модель:

export class Foo {
    name: string;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...