angular - 加载组件时触发事件(打开)
问题描述
我想在打开相应的事件时触发一个事件。让我解释一下这个场景。
这是我的组件选择器
<app-sadad class="knet-div" [payMethod]="'knet'"></app-sadad>
它被放置在另一个组件 html 中,在 app-sadad 组件中,我使用了响应式表单,如果 payMethod = Knet,我必须对特定的 formControl(olpid) 使用 validators.required。
this.sadadForm = new FormGroup({
'olpid': new FormControl(''),
'firstName': new FormControl('', Validators.required)
});
我已经尝试过 ngOnInit、ngAfterViewInit,它在表单加载时没有被触发,它在应用程序加载时触发。请告诉我在特定表单加载时触发的事件。
解决方案
如果 payMethod === 'knet' 的值,您只需要检查 onInit,然后编写包含必需的验证器。否则将其保留为空。
Validators.compose 返回一个 ValidationFn。您可以将其分配给表单控件。
@Input() payMethod;
validatorsComposition = null;
ngOnInit(){
if(this.payMethod === 'knet'){
this.validatorsComposition = Validators.compose([Validators.required]);
}
this.sadadForm = new FormGroup({
'olpid': new FormControl('', this.validatorsComposition),
'firstName': new FormControl('', Validators.required)
});
}
希望这可以帮助。
推荐阅读
- sql - 在 SQL 中计算过去 7 天的发生次数
- android - 如何在列表视图的每个项目上加载 json 数据并显示在 android 的另一个活动中获取的数据?
- c# - C# WPF:使用 Storyboard 和 EventTrigger 切换边距值
- android - Motionlayout:警告找不到视图 ID -1
- javascript - 将输入动态添加到动态表单
- python - Python/pandas 导出到 excel 转换的数据时间 (HH:mm)
- java - 用 lambda 替换 if-else 方法
- c - 有没有办法在打印结果时丢弃使用 malloc/realloc 存储的数字?
- python - 如何在 Django 模板上使用条件?
- amazon-web-services - Amazon S3 公开可用的测试