ngOnInit не работает второй раз в модальной форме - PullRequest
0 голосов
/ 18 мая 2018

Я создал компонент, который нужно открыть как модальную форму, и поместил его в мою форму, как показано ниже:

<app-customer-definition [customerCode]="null" (save)='customerSave($event)' (cancel)='customerCancel()'></app-customer-definition>

и открываем форму с кодом кнопки ниже:

<button type="button" class="btn btn-primary" data-toggle="modal" (click)="btnNewCompanyClick()" data-target="#mdlCustomerDefinition">
  <span>
    <i class="la la-plus"></i>
    <span>New Customer</span>
  </span>
</button>

Я передаю customerCode в качестве входного параметра.Если customerCode равно нулю, модальная форма создает новый экземпляр клиента, customerCode - это определенная модальная форма, получающая данные клиента для обновления в ngOnInit.

Для первого вызова модальная форма открывается и работает как положено.Но в других звонках ngOnInit не срабатывает, поэтому моя логика не работает.Должен ли я изменить свою логику (как) или как я могу запустить свою логику в ngOnInit или другом событии?

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Когда страница загружена, пометьте эту переменную как false.Когда вы загружаете модальное значение, то помечаете значение как снова ложное, а на следующей строке помечаете эту переменную как истинное, например: -

var a=false;
  constructor(){
    this.a = false;
   }

<button **(onclick)="methodCall()"** type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">Launch demo modal</button><div class="modal" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"><div class="modal-dialog" role="document">
<div class="modal-content" **ngif= "a"** >
  <div class="modal-header">
    <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>
  </div>
  <div class="modal-body">
    ...
  </div>
  <div class="modal-footer">
    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
    <button type="button" class="btn btn-primary">Save changes</button>
  </div>
</div>

`

 methodCall(){
  this.a = false;
  this.a = true;
  }

, используйте этот способэто также решает мою проблему, также есть проблема, связанная с этим только

0 голосов
/ 22 мая 2018

@ EnesKöroğlu, я обновил код, stackblitz.com/edit/angular-cam1b8 воспользуйтесь этой ссылкой, чтобы просмотреть ее, и она работает нормально, в соответствии с вашими требованиями

0 голосов
/ 18 мая 2018

используя модал bootstrap4, вы просто скрываете его и показываете модал при первом нажатии кнопки, затем появляется модальный экземпляр и когда вы удаляете модал, а не просто его скрытие, но он присутствует в DOM, когда модальный доход в действиикомпонент инициализируется и работает noOnInit, но когда вы открываете модальное во второй раз, модальное окно просто открывается, но не создает новый экземпляр компонента,

вместо noOnInit, вы можете использовать ngOnChange метод ловушки жизненного цикла метода angular2или ngDoCheck

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