[英]Giving illogical compilation errors for console.log() (Angular 13.0.1)
[英]Angular .subscribe giving compilation errors
我正在嘗試在組件模板中顯示http get呼叫響應數據。
我正在嘗試從Observable中提取對象數據,這些對象數據是從Service返回到組件的。 我使用了.subscribe方法,並且得到“ 類型'Subscription'無法分配給DataModel類型。屬性'entitlement'在類型Subscription中丟失”。
不知道我要去哪里錯了。 請指教-
我的模型文件:
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});
}
}
調用Subscription
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試圖將Subscription
解釋為DataModel
對象,這就是為什么它告訴您“類型'Subscription'無法分配給DataModel類型。Subscription類型中缺少屬性'entitlement'””
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.