更新传递给子组件 Angular2 的数据

Updating data that is passed into child component Angular2

我是 Angular2 - 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>。加载应用程序后,在子组件的绘制模板上只能看到一个用户。有没有什么方法可以在订阅发生并且所有用户都可以访问时更新模板?

如果要引用当前class的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