Angular 方法不是来自 if 语句的 returns
Angular method not returns from if statement
此方法永远不会 returns 正确。尽管它在控制台中显示了该真实消息。为什么会出现这种行为?
purgeEmptyRows(obj: any) :Observable<boolean> {
let isEmpty = false;
Object.keys(obj).forEach(key => {
if( obj[key] != null) {
if(typeof obj[key] != "object"){
console.log("true");
return Observable.of(true);
}
}else {
isEmpty = false;
}
})
return Observable.of(isEmpty);
}
}
你正在 return 内部有 true
的 Observable。所以你有两个选择。
第一个选项,将函数更改为return一个简单的布尔值而不是 Observable。
第二个选项,订阅您正在 returning 的可观察对象。
对于第一个选项,执行以下操作:
purgeEmptyRows(obj: any) :boolean {
let isEmpty = false;
Object.keys(obj).forEach(key => {
if( obj[key] != null) {
if(typeof obj[key] != "object"){
console.log("true");
isEmpty = true;
}
} else {
isEmpty = false;
}
});
return isEmpty;
}
对于第二个选项,您仍然需要将代码更改为以下内容:
purgeEmptyRows(obj: any) : Observable<boolean> {
let isEmpty = false;
Object.keys(obj).forEach(key => {
if( obj[key] != null) {
if(typeof obj[key] != "object"){
console.log("true");
isEmpty = true;
}
} else {
isEmpty = false;
}
});
return Observable.of(isEmpty);
}
然后,当您调用该函数时,您将调用订阅结果。这是一个例子:
const obs = purgeEmptyRows(rows);
obs.subscribe(res => {
console.log(res);
});
我想是你没有在里面赋值isEmpty
。
if(typeof obj[key] != "object"){
console.log("true");
return Observable.of(true);
}
它应该是这样的
if(typeof obj[key] != "object"){
isEmpty = true
}
此方法永远不会 returns 正确。尽管它在控制台中显示了该真实消息。为什么会出现这种行为?
purgeEmptyRows(obj: any) :Observable<boolean> {
let isEmpty = false;
Object.keys(obj).forEach(key => {
if( obj[key] != null) {
if(typeof obj[key] != "object"){
console.log("true");
return Observable.of(true);
}
}else {
isEmpty = false;
}
})
return Observable.of(isEmpty);
}
}
你正在 return 内部有 true
的 Observable。所以你有两个选择。
第一个选项,将函数更改为return一个简单的布尔值而不是 Observable。
第二个选项,订阅您正在 returning 的可观察对象。
对于第一个选项,执行以下操作:
purgeEmptyRows(obj: any) :boolean {
let isEmpty = false;
Object.keys(obj).forEach(key => {
if( obj[key] != null) {
if(typeof obj[key] != "object"){
console.log("true");
isEmpty = true;
}
} else {
isEmpty = false;
}
});
return isEmpty;
}
对于第二个选项,您仍然需要将代码更改为以下内容:
purgeEmptyRows(obj: any) : Observable<boolean> {
let isEmpty = false;
Object.keys(obj).forEach(key => {
if( obj[key] != null) {
if(typeof obj[key] != "object"){
console.log("true");
isEmpty = true;
}
} else {
isEmpty = false;
}
});
return Observable.of(isEmpty);
}
然后,当您调用该函数时,您将调用订阅结果。这是一个例子:
const obs = purgeEmptyRows(rows);
obs.subscribe(res => {
console.log(res);
});
我想是你没有在里面赋值isEmpty
。
if(typeof obj[key] != "object"){
console.log("true");
return Observable.of(true);
}
它应该是这样的
if(typeof obj[key] != "object"){
isEmpty = true
}