Angular 角度。订阅给定编译错误

Angular 角度。订阅给定编译错误,angular,observable,Angular,Observable,我试图在我的组件模板中显示http get调用响应数据 我试图从服务返回到组件的可观察对象中提取对象数据。我使用了.subscribe方法,得到“类型“Subscription”不可分配给类型DataModel。类型Subscription中缺少属性“authority”。 我不知道我会错在哪里。请告知- 我的模型文件:- export class DataModel { public entitlement: string; public serviceI

我试图在我的组件模板中显示http get调用响应数据

我试图从服务返回到组件的可观察对象中提取对象数据。我使用了.subscribe方法,得到“类型“Subscription”不可分配给类型DataModel。类型Subscription中缺少属性“authority”。

我不知道我会错在哪里。请告知-

我的模型文件:-

   export class DataModel {
        public entitlement: string;
        public serviceId: string;
        public techType: string;
        public avcId: string;
        public accessTechnology: string;
        public subAccessType: string;
    }
我的组件文件:-

import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { DataModel } from '../data-model';
import { DataFetchService } from '../data-fetch.service';
import { DataRequest } from '../data-request';


    @Component({
      selector: 'app-dashboard',
      templateUrl: './dashboard.component.html',
      styleUrls: ['./dashboard.component.css']
    })
    export class DashboardComponent{
        serviceType: string;
        serviceNumber: string;         
        cidn: string;
        spid: string;
        public data: DataModel;

      constructor(private datafetchService: DataFetchService) {
          }

       datapull(): void{
          this.data = this.datafetchService.getData(this.serviceType,this.serviceNumber,this.cidn,this.spid).subscribe(data => {this.data = data});
      }

    }
我的服务文件:-

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs/observable/of';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { DataModel } from './data-model';
import { UUID } from 'angular2-uuid';



@Injectable()

export class DataFetchService {

    private url: string = "xxx";
    private auth: string = "yyyy";
    private xrid: string;

  constructor(private http: HttpClient) { 
   }

   ngOnInit() {
    this.xrid = UUID.UUID();
  }

  getData(serviceType: string,serviceNumber: string,cidn: string,spid:string): Observable<DataModel> {

      const params = new HttpParams()
    .set('serviceType', serviceType)
    .set('serviceNumber', serviceNumber);
      const headers = new HttpHeaders()
            .set("CIDN", cidn).set("SPID", spid).set("x-request-id", this.xrid).set("Authorization",this.auth);

    return this.http.get<DataModel>(this.url,{headers,params});
  }

}
从'@angular/core'导入{Injectable};
从“rxjs/Observable”导入{Observable};
从“rxjs/observable/of”导入{of};
从'@angular/common/http'导入{HttpClient,HttpHeaders,HttpParams};
从“./data model”导入{DataModel};
从'angular2 UUID'导入{UUID};
@可注射()
导出类DataFetchService{
私有url:string=“xxx”;
私有身份验证:string=“yyyy”;
私有xrid:string;
构造函数(专用http:HttpClient){
}
恩戈尼尼特(){
this.xrid=UUID.UUID();
}
getData(serviceType:string,serviceNumber:string,cidn:string,spid:string):可观察{
const params=新的HttpParams()
.set('serviceType',serviceType)
.set('serviceNumber',serviceNumber');
const headers=新的HttpHeaders()
.set(“CIDN”,CIDN).set(“SPID”,SPID).set(“x-request-id”,this.xrid).set(“Authorization”,this.auth);
返回this.http.get(this.url,{headers,params});
}
}

当您调用
subscribe()
时,您将返回一个
Subscription
对象。当您执行以下操作时,您已将该订阅分配给您的
this.data
属性:

this.data = this.datafetchService.getData(this.serviceType,this.serviceNumber,this.cidn,this.spid).subscribe(data => {this.data = data});
只需删除任务,它就可以按照您的预期工作:

this.datafetchService.getData(this.serviceType,this.serviceNumber,this.cidn,this.spid).subscribe(data => {this.data = data});

Typescript试图将
订阅
解释为
数据模型
对象,这就是为什么它告诉您“类型“订阅”不可分配给类型数据模型。调用
订阅()时,类型订阅“”中缺少属性“权限”
,您将返回一个
订阅
对象。您在执行以下操作时将该订阅分配给了
this.data
属性:

this.data = this.datafetchService.getData(this.serviceType,this.serviceNumber,this.cidn,this.spid).subscribe(data => {this.data = data});
只需删除任务,它就可以按照您的预期工作:

this.datafetchService.getData(this.serviceType,this.serviceNumber,this.cidn,this.spid).subscribe(data => {this.data = data});

Typescript试图将
Subscription
解释为
DataModel
对象,这就是为什么它告诉您“type'Subscription'不可分配给type DataModel”。类型订阅“”中缺少属性“权限”

Subscribe的返回类型与示例组件中数据成员的类型不匹配Subscribe的返回类型与示例组件中数据成员的类型不匹配