我想在Angular 2+中使用ControlValueAccessor接口创建一个自定义表单元素.这个元素将是一个包装器<select>.是否可以将formControl属性传播到包装元素?在我的情况下,验证状态不会传播到嵌套选择,如您在附加的屏幕截图中看到的那样.
我的组件可用如下:
const OPTIONS_VALUE_ACCESSOR: any = {
multi: true,
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => OptionsComponent)
};
@Component({
providers: [OPTIONS_VALUE_ACCESSOR],
selector: 'inf-select[name]',
templateUrl: './options.component.html'
})
export class OptionsComponent implements ControlValueAccessor, OnInit {
@Input() name: string;
@Input() disabled = false;
private propagateChange: Function;
private onTouched: Function;
private settingsService: SettingsService;
selectedValue: any;
constructor(settingsService: SettingsService) {
this.settingsService = settingsService;
}
ngOnInit(): void {
if (!this.name) {
throw new Error('Option name is required. eg.: <options [name]="myOption"></options>>');
}
}
writeValue(obj: any): void { …Run Code Online (Sandbox Code Playgroud) 我有一个Spring启动Web应用程序.使用@Configurable注释通过java类配置应用程序.我介绍了两个配置文件:'install','normal'.如果安装配置文件处于活动状态,则不会加载任何需要数据库连接的Bean.我想创建一个控制器,用户可以在其中设置db连接参数.完成后我想将活动配置文件从'install'切换到'normal'并刷新应用程序上下文,这样Spring就可以初始化每个需要的bean数据库数据源.
我可以从代码中修改活动配置文件列表,没有问题,但是当我尝试刷新应用程序上下文时,我得到以下异常:
`java.lang.IllegalStateException:
GenericApplicationContext does not support multiple refresh attempts: just call 'refresh' once`
Run Code Online (Sandbox Code Playgroud)
这是我启动Spring启动应用程序的方式:
`new SpringApplicationBuilder().sources(MyApp.class)
.profiles("my-profile").build().run(args);`
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何启动春季启动应用程序让你多次刷新应用程序上下文?