我有一个组件,我将一些数据放入变量users
中,以便在另一个函数中读取它。当我在构造函数中打印这个变量并在控制台上打印它时,我可以看到它,但是当我在另一个函数中执行同样的操作时,我没有定义它。我已经尝试将它声明为私有和公共,并得到相同的结果。
如何声明此变量以查看另一个方法中的变量?
这是我的组件:
import { tap, take, map } from 'rxjs/operators';
...
export class SharedProofsComponent implements OnInit {
page = 1;
pageSize = 4;
collectionSize = COUNTRIES.length;
countries: User[];
users: User[];
constructor(private firestore: AngularFirestore) {
this.firestore.collection<User>('users').valueChanges().pipe(take(1)).subscribe(users => {
this.users = users;
// console.log(this.users);
this.refreshCountries();
});
}
refreshCountries() {
console.log("USERS:");
console.log(this.users); // here I got undefined
this.countries = this.items
.map((country, i) => ({id: i + 1, ...country}))
.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);
}
ngOnInit(): void {
}
}
编辑:
如果我把一个静态常数放在我的函数上,我可以得到数据:
this.countries = COUNTRIES
.map((country, i) => ({id: i + 1, ...country}))
.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);
但如果我这样做:
this.countries = this.items
.map((country, i) => ({id: i + 1, ...country}))
.slice((this.page - 1) * this.pageSize, (this.page - 1) * this.pageSize + this.pageSize);
我得到了一个错误:
属性'map'不存在于类型'观察
您必须小心,因为在构造函数方法中使用subscribe in firestore获取数据时,它是一个异步调用。如果在解决请求之前使用refreshCountries函数,则无法正确查看结果。
在订阅回调中添加this.refresh国家();
,这样。它变成:
this.firestore.collection<User('users').valueChanges().pipe(take(1)).subscribe(users => {
this.users = users;
this.refreshCountries()
});
在获取数据之前调用方法,并且异步获取用户。当您调用刷新国家
时,在用户
变量中没有任何数据。
应该管用
this.firestore.collection<User>('users').valueChanges().pipe(take(1)).subscribe(users => {
this.users = users; // get users
this.refreshCountries(); // call method
});
问题内容: 考虑一下Swift中的此类: 僵尸继承了Monster类的名称字段。 为什么 即使在函数头之前没有mutation关键字也能工作吗? 问题答案: 从语言指南- 方法中 : 从实例方法中修改值类型 结构和枚举是 值 类型。默认情况下,不能从其实例方法中修改值类型的属性。 但是,如果需要在特定方法中修改结构或枚举的属性,则可以选择对该方法进行行为更改。然后,该方法可以从方法内部更改(即更改
问题内容: 我究竟做错了什么?为什么$ path在函数外部正确打印,但是在函数内部无法访问? 问题答案: 因为它没有在函数中定义。 有几种方法可以解决此问题: 1)使用亚历克斯所说的话,告诉函数它是一个全局变量: 2)将其定义为常量: 3)如果特定于该函数,则将其传递给该函数: 根据功能的实际工作原理,其中之一会起作用。
我是一个很新的编码,我一直有问题的物理计算器,我一直在做。我做这件事是为了在类项目中使用OOP。我的要点是让用户输入变量,然后它们被运到类文件上的等式中,然后最后显示结果。当我尝试编译时,它说函数getAnswer看不到它上面声明的结果。我计划对这个方程进行16次迭代,所以我首先要弄清楚为什么这一次不起作用。欢迎任何回答。 -谢谢 这是类文件
我正在尝试使用Mongo和node/express JS的这个map函数构建一个对象数组。由于某种原因,当我运行控制台时,数组返回空。在map函数外部记录日志,但在map函数内部,它显示了每次迭代生成的数组。 为什么会发生这种行为?
我只是想学习Angular 2(特别是Angular 8),就我的一生而言,我不明白为什么类变量在类函数中是“未定义”的,但如果我用ES6风格编写函数,它是可以访问的。 我尝试在构造函数中设置,但这没有意义。 一旦调用HandleClickStart,每1.5秒输出一次NaN。为什么????我本以为是1 2 3...... 通过这种方式实现handleClickStart,可以获得预期的结果: 但
严格说来,Ruby中没有函数.但Kernel模块中定义的方法(可以在任何地方用做函数,因此)可被其他语言当做函数来调用.若您对这些方法进行再定义时,就必需考虑到对其他方面的影响. `str 把字符串str当做外部命令来运行,并以字符串方式返回命令的输出.使用`str`形式来调用该方法(还可以使用%x(...)表示法进行调用.请参考命令输出). 可以使用$?来了解命令的结束状态. 若您只想执行命令,