Почему у меня утечки памяти при применении ngModel внутри цикла ngFor? - PullRequest
0 голосов
/ 03 мая 2018

, поэтому в моем приложении 5 angular у меня есть следующий код:

<div *ngFor='let part of (post.student | async).get("qcm")'>
       <mat-checkbox>this can't be checked in or checked out</mat-checkbox>
</div>

post.student относится к типу PromiseObservable.

post.student | async имеет тип DocumentSnapshot (документ Firestore).

(post.student | async).get("qcm") - массив из трех объектов.

Моя проблема:

1) флажок не работает (не может быть проверен или нет)

2) если я попытаюсь применить директиву ngModel к флажку следующим образом:

<div *ngFor='let part of (post.student | async).get("qcm")'>
       <mat-checkbox [(ngModel)]='myBool'>this can't be checked in or checked out</mat-checkbox>
</div>

затем весь сайт блокируется, с помощью диспетчера задач я могу видеть, что у моего сайта есть утечки памяти:

диспетчер задач

обратите внимание, что если я использую другой массив объектов, отличный от (post.student | async).get("qcm"), все работает нормально.

также нет ошибок в консоли.

Я понятия не имею, что происходит, любая помощь приветствуется, спасибо!

1 Ответ

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

Поскольку я не могу добавлять комментарии, я просто пытаюсь опубликовать некоторую информацию, которая может помочь вам в качестве ответа.

Я не думаю, что вы можете просто так добавить ngModel. Вы должны привязать его к объекту, например [(ngModel)]="myDataModel". Обратите внимание, что [] and () есть, поэтому существует двусторонняя привязка, означающая, что все, что находится в вашем объекте myDataModel, будет отражено в флажке в любое время. (То есть, в принципе - если вы измените модель, изменится cehckbox, и если вы поменяете чекбокс, модель изменится). Вам не нужно всегда добавлять двухстороннее связывание, для получения дополнительной информации посетите сайт angular.

Кроме того, флажок может быть js, проверьте консоль браузера на наличие ошибок. Я предполагаю, что произошла какая-то ошибка, которая прервала выполнение кода JS.

Надеюсь, это поможет найти вашу проблему.

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