由于关于反应形式的预先输入的文档非常“有限”,我无法判断这是一个错误还是问题就在电脑前面。^^ 问题: 我希望每次表单更改时都进行异步http调用。到目前为止,这种情况发生了,每当我的表单更新时,我每次都会得到一个新的结果(这是我想要的)。但是没有出现带阵列的预先输入。
<input type="text"
class="form-control"
required minlength="3"
name="name"
placeholder="Search for people..."
formControlName="name"
[(ngModel)]="name"
typeaheadOptionField="name"
[typeaheadOptionsInScrollableView]="2"
[typeahead]="dataSource | async"
[typeaheadOptionsLimit]="100"
[typeaheadScrollable]="true"
[typeaheadAsync]="true"
(typeaheadLoading)="changeTypeaheadLoading($event)">
组件:
this.dataSource = this.form.valueChanges.pipe(
debounceTime(500),
switchMap((form) => {
return this.service.getstats(form).map((result:someTypedArr[]) => {
return result;
});
})
);
}
注意:我在Observable绑定中有异步管道 - 这意味着 - 我在html模板中订阅了它。
答案 0 :(得分:0)
经过一些试验和错误后,我想出了如何在typeAhead中显示结果我创建了一个EventEmitter属性:
$('#searchform').on('submit', function(e) {
e.preventDefault();
$.ajax({
type: this.method,
url: this.action,
data: $(this).serialize(),
success: function(response) {
$('#reload').html();
}
});
});
并发出订阅结果:
public clanEmitter: EventEmitter<ClansByClantagType[]> = new EventEmitter<ClansByClantagType[]>();
eventEmitter包含在html中,如下所示:
this.form.valueChanges.pipe(
debounceTime(500),
switchMap((form) => {
return this.service.getstats(form).map((result:someTypedArr[]) => {
return result;
});
})
).subscribe(result => {
this.clanEmitter.emit(result);
});
虽然我现在已经解决了,如果有人能告诉我为什么这实际上有效,那会很酷^^