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