angular - 可观察到此范围不适用于回调函数
问题描述
我正在使用 observable 将共享服务中的值共享给其他组件,但是在订阅时该值未定义。当我不使用任何回调函数时,我检查了 observable 和订阅者工作正常,但是当我通过回调函数中的 setter 方法设置“this”变量时,this 的范围似乎已经完成并且订阅者的值显示为未定义...
共享/ExamplenService.ts
@Injectable()
export class ExamplenService {
someValue: any;
public seturl(someUrl:String){
this.url=someUrl;
});
public seturl(){
var that=this;
return return Observable.create(observer => {
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
// Some code
getOtherUrl:function(err, data){ // Call back
console.log("Checkdata"+data.url);// I can see the value here
that.seturl(data.url) // The value is getting set here
}
});
public getSomething(): any {
const studentsObservable = new Observable(observer => {
setTimeout(() => {
observer.next(this.sameValue);
}, 1000);
});
return studentsObservable;
}
仪表板/测试/TestComponent.ts
export class TestComponent implements OnInit
_data : any;
constructor(private http: Http, private example: ExamplenService) {
}
ngOnInit() {
const s= this.example.getSomething().subscribe((_url :String)=>
{
console.log("Rest1"+_url);//This log is showing undefined)
this._data =_url;
console.log("Rest2"+this._data);//This log is showing undefined)
});
}
解决方案
不确定,但试试这个:
ngOnInit() {
const s = this.example.getSomething().subscribe((_url: String) => {
if (_url) {
console.log("Rest1" + _url);
this._data = _url;
console.log("Rest2" + this._data);
}
});
}
推荐阅读
- c# - ASP.NET Core 3.0 Razor 页面中的路由本地化
- android - 无法创建渐变材质设计按钮
- javascript - 使用 Javascript 做一些数学计算来计算范围
- javascript - React Native Side Menu (Navigator) 不覆盖整个屏幕
- angular - 正确使用 Angular /typsecript 用选定的对象填充数组
- ruby - 如何运行安装在替代路径上的 ruby 包?
- javascript - 使用 async/await 并得到“未能在 'response' 主体流上执行 'json' 被锁定在 eval”错误
- java - Java 变量超出范围,即使我已经在类中声明了它?
- c++ - 插件类未包含在 UE4 构建中
- python - 如何使用内联的 Jupyter 选项启动 pyspark?