【问题标题】:Expected 0 type arguments, but got 1 - angular 7预期 0 类型参数,但得到 1 - 角度 7
【发布时间】:2019-06-17 06:22:58
【问题描述】:

我正在使用来自 API 的 Asyng 数据创建 Material Auto-complete。 但这个问题出现了。我关注了此链接上的“https://stackblitz.com/edit/angular-material-autocomplete-async2?file=src%2Fapp%2Fuser.class.ts”。并且只是简单地将手动填充数组数据机制替换为api机制。

“this.http.get”中的 IUserResponse 带有红色下划线,错误为“预期 0 类型参数,但得到 1”

//////app.service.ts

search(filter: {companyName: string} = {companyName: ''}): Observable<IUserResponse> {
    return this.http.get<IUserResponse>(this.api+'PublicAPI/Schools',this.option)
    .pipe(
      tap((response: IUserResponse) => {
        response.results = response.results
          .map(user => new Schoollist(user.companyID, user.companyName))
          .filter(user => user.companyName.includes(filter.companyName))
        return response;
      })
      );
  }

/////schoollist.class.ts

export class Schoollist {
    constructor(public companyID: string, public companyName: string) {}
}
export interface IUserResponse {
  total: string;
  results: Schoollist[];
}

///app.component.ts

filteredSchs: Schoollist[] = [];
  usersForm: FormGroup;
  isLoading = false;

  constructor(public dialogRef: MatDialogRef<EducationalbackgroundUpdateComponent>,
    @Inject(MAT_DIALOG_DATA) public data: any,
    public dialog: MatDialog,
    private global: GlobalService,
    private http: Http,
    private fb: FormBuilder,
    ) { 

  }

  ngOnInit() {
    this.usersForm = this.fb.group({
      userInput: null
    })

      this.usersForm
      .get('userInput')
      .valueChanges
      .pipe(
        debounceTime(300),
        tap(() => this.isLoading = true),
        switchMap(value => this.global.search({companyName: value})
        .pipe(
          finalize(() => this.isLoading = false),
          )
        )
      )
      .subscribe(users => this.filteredSchs = users.results);
  }

  displayFn(sch: Schoollist) {
    if (sch) { return sch.companyName; }
  }```

【问题讨论】:

  • 他的问题出现了哪个问题?它发生在哪里?

标签: angular


【解决方案1】:

您可能使用的是Http 而不是HttpClient?如果您使用的是 HttpClient,那么get() 应该允许类型参数,另一方面,Http 不允许它。

来源:typescript error Expected 0 type arguments for get call

确保您导入:import { HttpClient } from '@angular/common/http'; 并将其包含在您的构造函数中:constructor(private http: HttpClient) {}

【讨论】:

  • 我只是尝试使用 HttpClient。并且此错误显示错误 TS2345:“OperatorFunction”类型的参数不可分配给“OperatorFunction, IUserResponse>”类型的参数。类型“IUserResponse”不可分配给类型“HttpEvent”。类型“IUserResponse”不可分配给类型“HttpUserEvent”。类型“IUserResponse”中缺少属性“类型”。
  • 您是否将这个observe?: 'body'; 添加到您的this.option 中?
  • 您的选项或从后端返回的内容可能有问题。您能说明您正在使用哪些选项以及您的 api 调用返回什么?
  • ``` this.option = new RequestOptions({ headers: this.header }); ``` { "companyID": "17598", "companyName": "A.H. Lacson Elementary School", "address": null },.......
  • 我刚刚删除了 this.option 并且在我编译项目时出现了 ERROR TypeError: Cannot read property 'map' of undefined
猜你喜欢
  • 2018-08-14
  • 1970-01-01
  • 2020-11-07
  • 2023-04-06
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2022-01-24
相关资源
最近更新 更多