Я использую Angular2-meteor, который использует Angular2 Beta 1 (на данный момент).
У меня есть простой компонент, содержащий:
- Кнопка для добавления документа. Новый документ отображается с кнопкой для его удаления по его _id.
- Также есть кнопка «Удалить все», которая просматривает collection.find(), удаляя каждый документ по _id.
В основном работает нормально. Вы можете добавлять документы и удалять их с помощью отдельной кнопки удаления. Когда вы «Удалить все», он удаляет их всех из базы данных. Курсор сообщает, что count() равен 0. Новый collection.find().count() сообщает 0. Но он удаляет только первый документ, который отображается в шаблоне с помощью *ngFor на странице клиент, который инициировал removeAll()
. Другие документы по-прежнему отображаются в браузере. Когда вы перезагружаете страницу, она отображает правильное содержимое базы данных. Другие подключенные клиенты всегда отображают правильное содержимое коллекции. Затрагивается только клиент, который инициирует removeAll()
.
Шаблон, кнопка "Удалить все" и *ngFor отображение документов
<input type="button" value="Remove All" (click)="removeAll()">
<ul>
<li *ngFor="#doc of docs">
<input type="button" value="Remove" (click)="remove(doc._id)">
point: x={{ doc.x }} y={{ doc.y }} _id={{ doc._id }}
</li>
</ul>
Компонент:
@Component({
selector: 'db-test',
templateUrl: 'client/db-test/db-test.html',
directives: [CORE_DIRECTIVES],
})
export class DbTestComponent{
coll = DbTestCollection;
docs: Mongo.Cursor<Object>;
constructor() {
this.docs = this.coll.find();
}
removeAll() {
this.docs.forEach((d) => {
this.coll.remove(d._id);
});
}
remove(id) {
this.coll.remove({ _id: id });
}
add(point: Point = {x: Math.random(), y: Math.random()}) {
this.coll.insert(point);
}
}