我是Angular2 - Meteor的开发新手。我在使用父子组件时偶然发现了一个问题。在父组件中,我有meteor订阅集合。
users: any;
constructor(private _zone:NgZone){
var sub = Meteor.subscribe("accounts/users");
Tracker.autorun(function() {
_zone.run(function() {
if(sub.ready()){
this.users = Meteor.users.find().fetch();
console.log(this.users);
}
});
});
}
用户集合共有90个用户。当应用程序最初加载时,仅找到当前用户,因此控制台日志显示一个用户。
我不确定我的Tracker.autorun()和NgZone的位置是否正确,但在加载应用程序的第二次后,控制台日志会显示所有90个用户的数组。我认为这是因为订阅最初没有准备好。
我的子组件将获取的用户作为此<sd-table [data]="users"></sd-table>
之类的参数接收。加载应用程序后,在子组件的绘制模板上只能看到一个用户。有没有办法在订阅发生时更新模板并且所有用户都可以访问?
答案 0 :(得分:0)
如果您想引用当前班级的this
,请不要使用function()
users: any;
constructor(private _zone:NgZone){
var sub = Meteor.subscribe("accounts/users");
Tracker.autorun(() => {
_zone.run(() => {
if(sub.ready()){
this.users = Meteor.users.find().fetch();
console.log(this.users);
}
});
});
}
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions