angular - Angular 8 动态表单 - 从回调中加载“选择”选项
问题描述
我有一个名为 的服务userService
,它有一个名为 的方法getUserFields()
。Field
它返回将在 my 中呈现的对象数组newUserComponent
。对于select
元素,我使用一个options
键设置选项。但是,在这种情况下,对于包含角色列表的选择元素,我需要通过调用getUserRoles()
.rolesService
如何在我的动态表单工作流中实现使用服务的回调?
用户服务.ts
import { Injectable } from '@angular/core';
import { Field } from '../../shared/models/field';
@Injectable({
providedIn: 'root'
})
export class UserService {
constructor() {}
async getUserFields() {
return [{
type: 'text',
label: 'Username',
name: 'username',
required: true,
},
{
type: 'text',
label: 'Surname',
name: 'surname',
required: true,
},
{
type: 'select',
label: 'Role',
name: 'role',
required: true,
options: () => {
// call rolesService.getUserRoles()
},
},
// etc...
];
}
}
新用户组件.ts
import { Component, OnInit } from '@angular/core';
import { UserService } from 'projects/recobros/src/app/core/services/user.service';
import { Field } from 'projects/recobros/src/app/shared/models/field';
// The `app-dynamic-field` component renders the field.
@Component({
selector: 'app-new-user',
template: `
<form ngNativeValidate (ngSubmit)="createNewUser($event.target)">
<ng-container *ngFor="let field of userFields | async">
<app-dynamic-field [field]="field"></app-dynamic-field>
</ng-container>
<br>
<button mat-raised-button color="primary">Crear usuario</button>
</form>
`,
styleUrls: ['./new-user.component.scss'],
})
export class NewUserComponent implements OnInit {
userFields: Promise<Field[]>;
constructor() {}
ngOnInit(): void {
this.userFields = this.userService.getUserFields();
}
createNewUser(form) {
// create user...
}
}
解决方案
推荐阅读
- javascript - react-native 文件上传到适用于 iOS 但不适用于 Android 的服务器
- android - 我对 DrawerLayout 有一些问题
- reactjs - React 导入多个函数
- chart.js - Chart.js - 删除 Y 轴上的零和步数
- python-3.x - 修改大型数据集时出现 Python3 内存错误
- excel - 获取网页中的 td 项目
- c++ - 使用 MAKEWORD 函数会产生错误 E0109- 明显调用的括号前的表达式必须具有 (pointer-to-) 函数类型
- android - 是否可以同时录制 2 个视频源?
- bash - 如何通过单独的文件使用 yarn 运行 bash 脚本?
- javascript - 如何将网络摄像头图像转换为 tcpdf 以进行打印和发送电子邮件