这是一项服务,为了测试它只返回1,2,3的数组
import {Injectable} from '@angular/core';
@Injectable()
export class CitiesService {
getCities() {
return ['1', '2', '3'];
}
}
AppComponent是一个自动完成框。 Formbuilder用于引用输入字段并获取值用户类型。
使用CitiesService的目的是从json文件中获取城市列表。
import { Component, Inject } from '@angular/core';
import { Observable } from 'rxjs/RX';
import { FormBuilder, FormGroup, FormsModule } from '@angular/forms';
import { CitiesService } from './cities.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [CitiesService]
})
export class AppComponent {
form: FormGroup;
searchTerm: string;
constructor(@Inject(FormBuilder) private _CitiesService: CitiesService, private _fb: FormBuilder){
var a = this._CitiesService.getCities();
this.form = _fb.group({
search: []
});
var search = this.form.controls['search'];
search.valueChanges
.subscribe(data => this.searchTerm = data);
}
}
但是我收到了这个错误
EXCEPTION:this._CitiesService.getCities不是函数
答案 0 :(得分:1)
您正在尝试将_CitiesService注入FormBuilder
constructor(@Inject(FormBuilder) private _CitiesService: CitiesService, private _fb: FormBuilder){
该行说明您的构造函数_CitiesService
的第一个参数应该使用FormBuilder的提供程序(@Inject(FormBuilder)
)注入。我真诚地怀疑这是你的意思。
相反,删除@Inject(FormBuilder) - 首先,除非构造函数参数的类型与用于注册为提供者的类型不匹配,否则不需要它。其次,即使你真的想要使用它,你也必须将@Inject放在它所适用的参数前面。
因此,请将您的行更改为:
constructor(private _CitiesService: CitiesService, @Inject(FormBuilder) private _fb: FormBuilder){
或者最好是
constructor(private _CitiesService: CitiesService, private _fb: FormBuilder){