簡體   English   中英

角.subscribe給出編譯錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM