使用胖箭头语法*和*声明返回类型的Angular/TypeScript方法的语法是什么?
我用的是角度6。在下面的简化代码中,我有一个名为getActive()的方法。在该方法中,我希望访问使用胖箭头语法*和*声明返回类型的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
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
值的变化将反映在视图中。上述代码可能不是正确的方法。我仍在学习可观察的事物。