1

方法

Meteor.methods({
    'test' : function(test: string) {
        return test;
    }
})

零件

我的班级扩展MeteorComponent

show: string;
constructor() {
     this.call('test', 'txt', (err, res) => {
          this.show = res
     });
}

看法

<span>{{show}}</span>

它什么也没显示,因为我希望它会显示“txt”。

4

2 回答 2

1

与 不同autoruncall没有参数告诉它在 内部运行NgZone,因此 Angular 的更改检测不会启动。

你需要这样写:

constructor(zone: NgZone) {
  this.call('test', 'txt', (err, res) => {
    zone.run(() => {
      this.show = res;
    });
  });
}
于 2016-06-16T11:08:08.583 回答
1

只需为@Martin C. 的答案添加解释即可。

在 Angular2-Meteor 0.5.6(尚未发布到 NPM)中,您应该能够使用autoBind.

  this.call('test', 'txt', (err, res) => {
    this.show = res;
  }, true);  // set `autoBind` to `true` here

https://github.com/Urigo/angular2-meteor/issues/279

于 2016-06-17T18:04:21.580 回答