angular - 赋值后重新计算的数组值
问题描述
我正在学习 Angular 并且在这个特定的电话中迷路了。我必须对本地 JSON 文件进行 3 次调用:
const one$ =this.http
.get(
"/assets/files/one.json"
).map((res) => res).catch(e => Observable.of(null));
const two$ =this.http
.get(
"/assets/files/two.json"
).map((res) => res).catch(e => Observable.of(null));
const three$ =this.http
.get(
"/assets/files/three.json").map((res) => res).catch(e => Observable.of(null));
forkJoin([one$, two$, three$]).subscribe(results => {
// results[0] is one
// results[1] is two
// results[2] is three
let Data = null;
console.log(results);
//results outputs the following now
[null, Array(35), Array(35)]
if (results[0] != null){
Data = results[0];
}
else if (results[1] =! null){
Data = results[1]; // expected array values here but i get boolean true
}
else if (results[2] =! null) {
Data = results[2]
}
});
执行完成后,Data 为 true,而不是数组。请参阅下面的控制台:
解决方案
你有这个:
else if (results[1] =! null){
你需要的是:
else if (results[1] !== null){
你得到了真的,因为single =是javascript中的赋值,所以你在第一种情况下将!null分配给结果[1],结果为真。您需要一个比较运算符,它要么是 != 要么最好是 !== 因为 !== 是严格的类型比较。但由于这是打字稿/javascript,你真的可以这样做:
else if (results[1]) {
因为它在这种情况下评估为“真实”,而 null 是“虚假”。这是IMO最简单/最干净的方式
推荐阅读
- azure - 如何解决 ARM 模板中的“无法加载架构”错误?
- php - TypeError:无法读取未定义选项卡上的属性“nodeName”
- javascript - 如何创建函数以减少代码中的冗余?[JS]
- sql - SQL 小数点要删除多余的值。?
- arguments - 如何减少榆树中的论点?
- postgresql - Flyway Enterprise Edition 使用 Maven 出错:无法解析插件
- python - How to pass variable consisting of list as argument to another python script
- c# - 在列表 C# 中创建列表
- html - 高分辨率 iphone 容器类的基本行为
- multithreading - Rust - 跨多个线程写入向量的索引