angular2-meteor では、Mongo.Cursor と zone() メソッドの代わりに MongoObservable.Collection の使用を開始しました。HTMLテンプレートの非同期。ここに最新のチュートリアルのリンクがあります
現在、Meteor.users.find({}) メソッドでこの zone() メソッドを使用して、新しいユーザーが正常に作成されたときにアプリ内のすべてのユーザーを自動的に表示しようとしています。
サーバー側のコード
Meteor.publish("userData", function() {
if (Roles.userIsInRole(this.userId, 'admin')) {
return Meteor.users.find();
} else {
const selector = {
'_id': this.userId
};
return Meteor.users.find(selector);
}
});
そしてクライアント側で私が使用した
userlist: Observable<any[]>;
userSData: Subscription;
ngOnInit() {
this.usersData = MeteorObservable.subscribe('userData').subscribe(() => {
this.userlist=Meteor.users.find({}).fetch();
});
htmlコードは
<li class="list-item" *ngFor="let user of userlist">
これに .zone() を適用すると、this.userlist = Meteor.users.find({}).zone();
このエラーが発生します。
TypeError: meteor_1.Meteor.users.find(...).zone is not a function
zone() と | を使用しない場合 非同期の場合、すべてのユーザー リストを取得しますが、ユーザーを削除するか、新しいユーザーを作成すると、リストが自動的に更新されず、更新する必要があります。新しいコンテンツを自動レンダリングするには、ゾーンと非同期を使用する必要がありますが、Meteor.users.find() では機能しません。