我在服务中有一个表格:
this.settingsForm = this.formBuilder.group({
names: this.formBuilder.array([]),
globalIDs: this.formBuilder.array([]),
topics: this.formBuilder.array([]),
emails: this.formBuilder.array([]),
description: ''
});
为方便起见而使用吸气剂-
get description(): FormControl{
return this.settingsForm.get('description') as FormControl;
}
在某些指令中,我正在注入服务,并有一个附加到此控件的输入。 html-
<textarea matInput
[formControl]="settingsDataService.description">
</textarea>
在指令中,我有一个侦听器:
ngOnInit() {
this.listenToSearchInput();
}
listenToSearchInput() {
this.settingsDataService.description.valueChanges.pipe(
distinctUntilChanged(),takeUntil(this.descriptionDestroy))
.subscribe(value => {
//DO SOMETHING
});
}
但是当我在文本区域中键入内容时,我的订户不会被呼叫。
也许是相对的,但是在调用listenToSearchInput()之后,在服务中,当我从服务器得到答案后,我将通过-
this.settingsForm.patchValue({description:description});
可能是什么原因?
答案 0 :(得分:0)
可能您需要在指令的onChanges
生命周期挂钩中调用该函数。
onChanges(): void {
this.settingsDataService.description.valueChanges.pipe(
distinctUntilChanged(),takeUntil(this.descriptionDestroy))
.subscribe(value => {
//DO SOMETHING
});
}
答案 1 :(得分:0)
我在从服务器获取数据的函数中找到了答案-,我创建了一个新的seetingsForm来清理以前的数据。