角服务。组件错误TS2339:类型“ Promise <Object>”上不存在属性“ subscribe”

时间:2019-06-18 15:46:54

标签: angular subscribe

我正在尝试通过为教区创建Web应用程序来学习角度知识。 在products-list.component.ts中,我有正确的删除方法,但是在npm start阶段,它出现了错误代码

TS2339:类型“ Promise”上不存在属性“ subscribe”。

如果我不尊重转发问题的正式规则,我深表歉意,但是我是新来的,也许是我错误地记录了问题。 谢谢你的耐心。 莫雷诺

onDelete方法上出错

在其他类中,我使用类似的代码,并且没有发生此类错误。 list.component-products上有进口吗? 谢谢无限

import { Component, OnInit, SystemJsNgModuleLoader } from '@angular/core';
import { NgForm } from '@angular/forms';


import { Prodotti } from 'src/app/model/prodotti.model';
import { Router, ActivatedRoute } from '@angular/router';
import { JsonPipe } from '@angular/common';

import { ProdottiListService} from 'src/app/features/prodotti/components/prodotti-list/prodotti-list.service';
import { ToastrService } from 'ngx-toastr';



let Header_Msg = "Gestione Prodotti";


@Component({
  selector: 'app-prodotti-list',
  templateUrl: './prodotti-list.component.html',
  styleUrls: ['./prodotti-list.component.css']
})
export class ProdottiListComponent implements OnInit {

  constructor(private service: ProdottiListService, private toastr: ToastrService) {

   }

  ngOnInit() {
    this.service.refreshList();
  }

  populateForm(emp: Prodotti) {
    this.service.formData = Object.assign({}, emp);
  }

  onDelete(id: number) {

    if (confirm('Confermi la cancellazione del Record ?'))  {
        this.service.deleteProdotti(id).subscribe(res => {
          this.service.refreshList();
          this.toastr.warning('Cancellazione eseguita con successo', Header_Msg);
        })
    }
  }

}

src / app / features / prodotti / components / prodotti-list / prodotti-list.component.ts(41,41)中的错误:错误TS2339:“承诺”类型不存在属性“订阅”。

1 个答案:

答案 0 :(得分:0)

您需要确保服务方法返回Observable 不是 promise

在您的情况下,ProdottiListServicedeleteProdotti会返回promise,因此您应该使用.then(..)而不是.subscribe()

更新服务方法以返回observable或不使用组件中的.subscribe

this.service.deleteProdotti(id).then(res => {
          this.service.refreshList();
          this.toastr.warning('Cancellazione eseguita con successo', Header_Msg);
        })