trackFormChanges() {
this.form.valueChanges.pipe(
debounceTime(300),
distinctUntilChanged())
.subscribe(data => {
setTimeout(() => {
if (this.form.dirty && this.form.touched) { //dirty works but touched property has old value
this.pr
我正在构建一个反应式的角度表单,并试图找到一种在提交时触发所有验证器的方法。如果验证器是同步的,那就没问题了,因为我可以内联得到它的状态。否则,如果验证器是异步验证器,并且尚未触发,则ngSubmit方法上的表单将处于挂起状态。我试图注册表单statusChange属性的订阅,但当我使用markAsTouched函数手动调用验证时,它不会触发。
下面是一些代码片段:
//initialization of form and watching for statusChanges
ngOnInit() {
this.ctrlForm = new FormGroup({
当试图使用表单数组观察statusChanges/valueChanges时,我在使用反应性表单时遇到了问题。当表单的值发生变化时,当表单发生变化时,我会订阅并做一些事情。我有这样的表格
form = new FormGroup({ users: new formArray ([
new FormGroup({name: new FormControl(''),
total: new FormControl('')})
]) })
我试过这样观察他们,但这行不通。
ngOnInit() {
this.form.statusCha
当不同的formGroups持有相同的formControl时,如果formControl发生变化,则只会通知其中的一个。 formControl有一个parent属性,但没有parents,当它被添加到formGroup中时,angular将替换它的parent属性。 const parent1 = new FormGroup({});
const partent2 = new FormGroup({});
const control = new FormControl();
parent1.addControl('key1', control);
parent2.addC
我使用的角度与反应形式和材料UI。我有一种形式,其中我有一个文本字段,只有当另一个字段有一个特定的值时才需要它--例如,一个文本输入只会出现,如果选择单选按钮,它是必需的。下面是一个示例代码片段:
<div>
Do you have any concerns?
</div>
<mat-radio-group formControlName="haveConcerns">
<mat-radio-button [value]=true>yes</mat-radio-button>
<mat-r
下面有一个组件,它基本上在ngOnInit中调用一个外部API服务--这将在this.items中返回一个gifs数组。
我有一个函数applyGif --一旦用户单击它调用该函数的图像并重置表单searchTerm,问题是每次调用resetSearchBox以清除文本输入框时,它运行valueChanges事件并再次以字符串值'null‘执行gifpickerService.search --我不希望它在没有值的情况下调用它--我做错了什么?
我想重置表单,但不调用search()中的ngOnInit -做错了什么?
export class GifpickerComponent i
由于特殊情况,我需要在提交函数中重新验证表单。敬请指教。谢谢你。
onSubmit() {
this.myForm.updateValueAndValidity();
someObservable() // what to put here?
.subscribe((stillValid: boolean) => {
if (stillValid) send();
}
}
我试图将valueChanges和statusChanges合并到一个订阅中,因为我想在这2项更改中的任何一项更改时执行一些逻辑操作。
我正在尝试使用combineLatest,一旦其中一个可观测数据得到更新,它就会启动。我遇到的问题是rxjs给了我一个警告,valueChanges和statusChanges不能订阅。
this.control是一个角FormControl
我用的是"rxjs": "^6.3.3"
这是我在控制台中得到的错误信息。
TypeError: You provided an invalid object where a stream