好的,所以我打电话给firebase并返回给定位置的孩子。
然后我遍历返回的值并填充我的自定义类,即description
和id
这是有效的,因为我将options
记录到控制台,我可以看到条目。
问题我试图将此方法中的值返回到我的组件,因为代码如下所示:
getIntent(): Promise<Array<Dropdown>> {
const options: Dropdown[] = [];
var d = this.af.database.list('/option1').subscribe(items => {
items.forEach(item => {
options.push({
id: item.$key,
description: item.$value
})
return false;
});
});
return options;
}
在返回行上,当前带有以下错误的下划线:
Type 'Dropdown[]' is not assignable to type 'Promise<Dropdown[]>'.
Property '[Symbol.toStringTag]' is missing in type 'Dropdown[]'.
我试过了:
return options as Promise<Array<Dropdown>>;
但遗憾的是,这没有用,有人可以说明如何让这个函数返回下拉选项。
旁注:目前也在使用angularfire2
答案 0 :(得分:1)
import 'rxjs/add/operator/map';
getIntent(): Observable<Dropdown[]> {
return this.af.database.list('/option1')
.map(items => items
.map(({$key, $value}) => ({
id: $key,
description: $value
})
);
}
然后,您将在某个组件中订阅此方法。
值得注意的是,虽然您的问题建议使用名为class
的{{1}},但我们并没有实例化它。如果Dropdown
确实被声明为Dropdown
,则最好将其更改为class
,以便无法意外执行始终interface
的检查是假的。
<强>前强>
instanceof
<强>后强>
export class Dropdown {
id: string; // maybe number?
description: string;
}