【发布时间】:2020-03-16 06:44:18
【问题描述】:
在 component.ts 我有这个方法,它调用 api 并使用响应。我得到一个空数组,因为它没有在订阅时等待
disp(): String[] {
let scores: String[] = [];
this.assessmentService.getPrograms().subscribe(
(res: AssessmentResponse[]) => {
res.map(
function (t) {
const body = `{id: ${t.id}, name: "${t.name}"}`;
scores.push(body);
})
return scores;
},
(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.log("Client-side error occured.");
} else {
console.log("Server-side error occured.");
}
});
console.log("returned");
return scores;
}
我想存储从disp返回的数组
programList$ = observableOf(this.disp);
然后我使用 programList$ 来设置选项的值,我发布了一小段代码,因为它有多个选项卡
tabs: TabType[] = [
{
label: 'Assign Program',
fields: [
{
fieldGroupClassName: 'display-flex',
fieldGroup: [
{
className: 'flex-1',
key: 'campaign',
type: 'select',
templateOptions: {
label: 'Campaign',
placeholder: 'Select Campaign',
// description: 'Campaign Name',
required: true,
options: this.programList$,
这是我的服务电话
public getPrograms(): Observable<AssessmentResponse[]> {
return this.http.get(this.endpoint,this.headers.httpOptions)
.pipe(map((data: EmbeddedAssessmentsResponse) => data._embedded.programs));
}
PS:我是 angular 和 typescript 的新手,感谢任何帮助。
【问题讨论】:
-
如果你想等待订阅被调用,你的代码没有意义。 disp() 在哪里被调用?
-
从调用 disp 的地方更新
标签: javascript angular typescript angular8