类型“ PolicyData []”缺少类型“ Observable <policydata []>”的以下属性

时间:2019-02-12 07:25:49

标签: angular6 angular-httpclient angular-material-6

在使用我的角度应用程序时,在用户界面上将json响应从我的服务返回到下拉选择中,但是在我什至无法运行我的代码之前就遇到了这个问题 预先感谢您提供解决此问题的指导。

  

类型“ PolicyData []”缺少类型“可观察”的以下属性:_isScalar,源,运算符,提升和其他5个。ts(2740)

以下是我使用的代码 policy.component.ts

public policyinc: Observable<PolicyData[]> = of([]);
getIncCompany() {

        this.policyService.getIncCompany()
        .subscribe(data => { 
            console.log(data);
         this.policyinc = data,
        (error: any) => this.errorMessage = <any>error,
        console.log(this.policyinc);
        }

    );
        }

service.ts文件

 getIncCompany(): Observable<PolicyData[]> {
  const headers = new HttpHeaders({ 'Content-Type': 'application/json'});
  let body = '{}';
  return this.http
  .post<PolicyData[]>(this.apiUrl, body, { headers: headers })
    .pipe(
      tap(data => console.log('getIncCompany: ' + JSON.stringify(data))),
      catchError(this.handleError)
    );
}

和html组件

    <div class="col-lg-4 m-form__group-sub">
                                            <mat-form-field class="example-full-width" appearance="outline">
                                                <mat-label> Handicapped Discount
                                                </mat-label>
                                                <mat-select placeholder="Select">
                                                    <mat-option value="option" *ngFor="let polB of policyinc">{{ polB.bankName }}</mat-option>
                                                </mat-select>
                                            </mat-form-field>
                                        </div> 

1 个答案:

答案 0 :(得分:0)

policyInc被声明为可观察的

在getIncCompany中,您订阅了policyService.getIncCompany,然后将返回数据分配给this.policyinc,但是返回数据不是Observable。

尝试将policyinc简化为PolicyData [];

点击操作符可用于登录控制台

public policyinc: PolicyData[];

getIncCompany() {

  this.policyService.getIncCompany()
    .pipe(tap(data => console.log(data)))
    .subscribe(
      {
        next: data => this.policyinc = data,
        error: error => this.errorMessage = error
      });
}

此外,“将来,订阅将仅使用一个参数:下一个处理程序(一个函数)或一个观察者对象。”来自Subscribe is deprecated: Use an observer instead of an error callback