我得到了ERROR RangeError。當我在其中一個輸入中輸入東西時,在控制臺中得到 ERROR RangeError: Maximum call stack size exceeded 訊息
。app.component.html
<div class="container-wrap">
<div class="container">
<input type="number" [formControl]="input1">
<input type="number" [formControl]="input2">
</div>
</div>
app.component.ts
constructor() { }
input1:FormControl=new FormControl();
input2:FormControl=new FormControl();
ngOnInit(): void {
this.input1.valueChanges
.pipe(tap(value=>{
this.input2.setValue(value)。
}).subscribe()。
this.input2.valueChanges
.pipe(tap(value=>{
this.input1.setValue(value);
}).subscribe()。
}
看起來就像在我的一個輸入中鍵入了應用程式中的無盡的valueChanges回圈。
我想讓我在iput1中輸入的東西在input2中輸入,同時當我在input2中輸入時,它將改變input1的輸入。
如何解決這個問題?
。uj5u.com熱心網友回復:
你可以使用一個FormGroup包含你的兩個FormControl。
用一個FormBuilder,它將會是這樣的:
constructor(formBuilder: FormBuilder) {}.
ngOnInit(): void {
this.formGroup = this.formBuilder.group({
inputA: this.input1,
輸入B: this.input2
});
this.formGroup.valueChanges.subscribe(values => [switch values here])。
}
uj5u.com熱心網友回復:
你可以給setValue傳遞一個額外的引數,它應該停止你的valueChanges在你正在編輯的值上運行。
this.input1.valueChanges
.pipe(tap(value=>{
this.input2.setValue(value, { emitEvent: false });
})).訂閱()。
this.input2.valueChanges
.pipe(tap(value=>{
this.input1.setValue(value, { emitEvent: false });
})).subscribe()。
uj5u.com熱心網友回復:
錯誤的發生是由于你的值變化訂閱引起的無限回圈,一旦一個輸入變化,它觸發第二個輸入值變化,然后第二個值變化監聽器將觸發第一個,回圈繼續,你可以通過添加emitEvent: false到你的表單控制設定值來解決這個問題
this.input2.setValue(value, {emitEvent: false})。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/332368.html
標籤:
上一篇:Angular-ERRORTypeError。無法讀取未定義的屬性(讀取'vehicle_image')。
下一篇:攔截器創建兩個單機服務的實體
