Angular 服务中声明的函数获取;不是一个函数;
这是一个服务,为了进行测试,它只返回1,2,3的数组Angular 服务中声明的函数获取;不是一个函数;,angular,typescript,Angular,Typescript,这是一个服务,为了进行测试,它只返回1,2,3的数组 import {Injectable} from '@angular/core'; @Injectable() export class CitiesService { getCities() { return ['1', '2', '3']; } } AppComponent是一个自动完成框。Formbuilder用于引用输入字段并在中获取用户类型的值 使用C
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);
}
}
但是我得到了这个错误
例外情况:此.u CitiesService.getCities不是一个函数
您正在尝试将您的(u cities)服务作为表单生成器注入
constructor(@Inject(FormBuilder) private _CitiesService: CitiesService, private _fb: FormBuilder){
该行表示构造函数的第一个参数\u CitiesService
,应该使用FormBuilder的提供程序(@Inject(FormBuilder)
)进行注入。我真诚地怀疑你的本意
相反,删除@Inject(FormBuilder)-首先,除非构造函数参数的类型与用于注册为提供程序的类型不匹配,否则不需要它。其次,即使您真的想使用它,也必须将@Inject放在它所应用的参数前面
因此,将您的行更改为:
constructor(private _CitiesService: CitiesService, @Inject(FormBuilder) private _fb: FormBuilder){
或者更好
constructor(private _CitiesService: CitiesService, private _fb: FormBuilder){
当您在供应商列表中使用它时,为什么要将其作为注射?非常感谢!我很惊讶你的反应如此之快!