【发布时间】:2019-01-17 06:31:55
【问题描述】:
我在服务中有一个表单:
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
});
}
但是当我在 textarea 中输入时,我的订阅者没有被调用。
也许它是 relevenat- 但在调用 listenToSearchInput() 之后,在我从服务器获得答案后的服务中,我正在填写描述 -
this.settingsForm.patchValue({description:description});
可能是什么原因?
【问题讨论】:
-
descriptionDestroy 定义在哪里
-
您的代码中的
descriptionDestroy是什么?takeUntil以定时器为参数 -
不,
takeUntil将任何 observable 作为参数。
标签: javascript angular typescript rxjs