5

我正在尝试在ng-bootstrap带有 Angular 2 的反应式表单上使用 Typeahead 组件,并且在查看Typeahead 文档中的示例代码后,我无法让它工作。

目前,我有类似的东西:

<input type="text" aria-describedby="cityValid" class="form-control" id="inputCity" [formControl]="userForm.controls.city" [ngbTypeahead]="search">

使用search与示例代码几乎相同的函数,但它失败并显示以下堆栈跟踪

error_handler.js:53 TypeError: Cannot read property 'subscribe' of undefined
at NgbTypeahead._subscribeToUserInput (typeahead.js:158)
at NgbTypeahead.ngOnInit (typeahead.js:52)
at DebugAppView._View_UserFormComponent0.detectChangesInternal (UserFormComponent.ngfactory.js:1093)
at DebugAppView.AppView.detectChanges (view.js:271)
at DebugAppView.detectChanges (view.js:376)
at DebugAppView.AppView.detectViewChildrenChanges (view.js:297)
at DebugAppView._View_ExecutionFormComponent3.detectChangesInternal (ExecutionFormComponent.ngfactory.js:551)
at DebugAppView.AppView.detectChanges (view.js:271)
at DebugAppView.detectChanges (view.js:376)
at DebugAppView.AppView.detectContentChildrenChanges (view.js:289)

我究竟做错了什么?最好有一个关于如何在反应式表单上使用 ng-bootstrap 组件的一般指南,因为该示例基于基于模板的示例。

谢谢!

4

1 回答 1

24

没关系,问题是我采用了示例中出现的搜索功能并将其转换为普通功能但没有返回任何值。

我有

searchCity (text$: Observable<string>) {
  text$
  .debounceTime(200)
  .distinctUntilChanged()
  .map(term => term.length < 2 ? []
    : cities.filter(v => new RegExp(term, 'gi').test(v)).splice(0, 10));
}

在固定的东西之前添加一个return语句。text$

于 2016-10-12T19:08:03.213 回答