У меня есть реактивная форма на моей странице.
Вот краткое изложение кода:
<div class="container">
<form [formGroup]="transactionForm" (ngSubmit)="onSubmit(transactionForm)">
<div formGroupName="userInfoGroup" class="form-group">
<input formControlName="name" class="form-control" placeholder="Larry" id="name">
</div>
...
</form>
</div>
Вот где это становится сложно. Я хочу, чтобы пользователь мог вводить информацию о человеке, который его направил (который может существовать или не существовать в нашей базе данных). Поэтому я хочу использовать ng-bootstrap typeahead, чтобы предоставить способ найти существующего пользователя.
Итак, я скопировал код html
и ts
из ng-bootstrap, и теперь мой шаблон выглядит так:
<div class="container">
<form [formGroup]="transactionForm" (ngSubmit)="onSubmit(transactionForm)">
<div formGroupName="userInfoGroup" class="form-group">
<input formControlName="name" class="form-control" placeholder="Larry" id="name">
</div>
<input id="typeahead-http" type="text" class="form-control" [(ngModel)]="model" [ngbTypeahead]="searchForReferrer" placeholder="Search for Referrer" />
...
</form>
</div>
Когда я запускаю это сейчас, я получаю ошибки:
RegisterTransaction.html:154 ERROR TypeError: Cannot read property 'lift' of undefined
at tapOperatorFunction (tap.js:52)
at _do (do.js:48)
at NgbTypeahead.webpackJsonp.../../../../@ng-bootstrap/ng-bootstrap/typeahead/typeahead.js.NgbTypeahead.ngOnInit (typeahead.js:73)
at checkAndUpdateDirectiveInline (core.es5.js:10843)
at checkAndUpdateNodeInline (core.es5.js:12341)
at checkAndUpdateNode (core.es5.js:12284)
at debugCheckAndUpdateNode (core.es5.js:13141)
at debugCheckDirectivesFn (core.es5.js:13082)
at Object.View_RegisterTransaction_0._co [as updateDirectives] (RegisterTransaction.html:163)
at Object.debugUpdateDirectives [as updateDirectives] (core.es5.js:13067)
[1]: https://ng-bootstrap.github.io/#/components/typeahead/examples
и если я просто удалю [ngbTypeahead]="searchForReferrer"
, я получу
RegisterTransaction.html:154 ERROR Error:
ngModel cannot be used to register form controls with a parent formGroup directive. Try using
formGroup's partner directive "formControlName" instead. Example:
<div [formGroup]="myGroup">
<input formControlName="firstName">
</div>
In your class:
this.myGroup = new FormGroup({
firstName: new FormControl()
});
Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:
Example:
<div [formGroup]="myGroup">
<input formControlName="firstName">
<input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">
</div>
at Function.webpackJsonp.../../../forms/@angular/forms.es5.js.TemplateDrivenErrors.modelParentException (forms.es5.js:4110)
at NgModel.webpackJsonp.../../../forms/@angular/forms.es5.js.NgModel._checkParentType (forms.es5.js:4430)
at NgModel.webpackJsonp.../../../forms/@angular/forms.es5.js.NgModel._checkForErrors (forms.es5.js:4417)
at NgModel.webpackJsonp.../../../forms/@angular/forms.es5.js.NgModel.ngOnChanges (forms.es5.js:4324)
at checkAndUpdateDirectiveInline (core.es5.js:10840)
at checkAndUpdateNodeInline (core.es5.js:12341)
at checkAndUpdateNode (core.es5.js:12284)
at debugCheckAndUpdateNode (core.es5.js:13141)
at debugCheckDirectivesFn (core.es5.js:13082)
at Object.View_RegisterTransaction_0._co [as updateDirectives] (RegisterTransaction.html:163)
Как мне правильно использовать этот предварительный поиск внутри существующей реактивной формы?
searchForReferrer
- person Aluan Haddad   schedule 04.12.2017searchForReferrer
возвращает наблюдаемое? Вы сказали, что ваш код точно такой же, но, по крайней мере, он отличается по названию. Почему бы не опубликовать это? - person Aluan Haddad   schedule 04.12.2017