使用胖箭头语法*和*声明返回类型的Angular/TypeScript方法的语法是什么?

使用胖箭头语法*和*声明返回类型的Angular/TypeScript方法的语法是什么?,angular,typescript,angularjs-scope,Angular,Typescript,Angularjs Scope,我用的是角度6。在下面的简化代码中,我有一个名为getActive()的方法。在该方法中,我希望访问this.active的值,但是this对象不在范围内 如何对此应用胖箭头语法,以便在方法内部可以访问this.active的值?我已经浏览了网络,尝试了我能想到的所有可能的语法,但没有一个能编译 export class PlayerComponent implements OnInit { active: boolean; isActive: Observable<boo

我用的是角度6。在下面的简化代码中,我有一个名为getActive()的方法。在该方法中,我希望访问
this.active
的值,但是
this
对象不在范围内

如何对此应用胖箭头语法,以便在方法内部可以访问
this.active
的值?我已经浏览了网络,尝试了我能想到的所有可能的语法,但没有一个能编译

export class PlayerComponent implements OnInit {

  active: boolean;   
  isActive: Observable<boolean> = this.getActive();

  constructor() {
      this.active = false;
  }

  getActive(): Observable<boolean> {
      return of(this.active);
  }

}
导出类PlayerComponent实现OnInit{
活动:布尔值;
isActive:Observable=this.getActive();
构造函数(){
this.active=false;
}
getActive():可观察{
返回(此。活动);
}
}

请注意,当我在
getActive()
方法中手动设置返回值时,我的应用程序工作正常,例如:
returnof(false)
只是它无法访问
this.active的值

问题不在于
this
或箭头函数的绑定,而在于初始化顺序。首先调用字段初始值设定项(从而调用
getActive
方法),然后才执行构造函数的其余部分。您可以在为
es5
生成的代码中看到这一点:

var PlayerComponent = /** @class */ (function () {
    function PlayerComponent() {
        this.isActive = this.getActive(); // active not set yet
        this.active = false;
    }
    PlayerComponent.prototype.getActive = function () {
        return of(this.active);
    };
    return PlayerComponent;
}());
最简单的解决方案是在构造函数中移动可观察对象的初始化,您可以在其中控制顺序:

export class PlayerComponent implements OnInit {

    active: boolean;
    isActive: Observable<boolean>;

    constructor() {
        this.active = false;
        this.isActive = this.getActive();
    }

    getActive(): Observable<boolean> {
        return of(this.active);
    }

}
导出类PlayerComponent实现OnInit{
活动:布尔值;
主动的:可观察的;
构造函数(){
this.active=false;
this.isActive=this.getActive();
}
getActive():可观察{
返回(此。活动);
}
}

如何调用
getActive
呢?@TitianCernicova Dragomir:我已经编辑了原始问题,以显示
getActive
是如何被调用的。好的,与我想的问题不同,我将很快编辑我的答案。我应该注意,
this.active
的值确实会定期变化。在我的模板中,我使用异步管道引用
isActive
。想法是
this.active
值的变化将反映在视图中。上述代码可能不是正确的方法。我仍在学习可观察的事物。