首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular14 14:在类型‘void’..ts(2339)上不存在属性“订阅”。

Angular14 14:在类型‘void’..ts(2339)上不存在属性“订阅”。
EN

Stack Overflow用户
提问于 2022-10-10 16:07:58
回答 1查看 65关注 0票数 0

我得到了这个错误: TS2339:属性‘订阅’在'void‘类型上不存在。

contacts.component.ts

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Observable } from 'rxjs';
import { ContactsService } from '../contacts.service';

@Component({
  selector: 'app-contacts',
  templateUrl: './contacts.component.html',
  styleUrls: ['./contacts.component.scss']
})
export class ContactsComponent implements OnInit {

  constructor(public contactService:ContactsService) { }
  
  msgTrue=false;
  
  updateContact(contactId: number){
    const newData={id:contactId,firstName:'Roa',lastName:'Hugo'};
    this.contactService.updateContact(contactId,newData).subscribe(data=>{
      this.msgTrue=true;
    });
    
  }
}

contacts.service.ts

代码语言:javascript
复制
import { Injectable } from '@angular/core';
import { HttpClient,HttpHeaders,HttpParams } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class ContactsService {
  constructor(private httpClient:HttpClient) { }

  updateContact(contactId:number,updateBody:any){
    const endpoint='http://localhost:3000/contacts/'+contactId;
    this.httpClient.put(endpoint,updateBody);
  }
}

tsconfig.json

代码语言:javascript
复制
{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "forceConsistentCasingInFileNames": true,
    "strict": false,
    "noImplicitOverride": true,
    "noPropertyAccessFromIndexSignature": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2020",
    "module": "es2020",
    "lib": [
      "es2020",
      "dom"
    ]
  },
  "angularCompilerOptions": {
    "enableI18nLegacyMessageIdFormat": true,
    "strictInjectionParameters": true,
    "strictInputAccessModifiers": true,
    "strictTemplates": true
  }
}

我在contacts.component.ts上得到了错误

行: this.contactService.updateContact(contactId,newData).subscribe(data=>{

错误TS2339:属性“订阅”在类型'void‘上不存在。

我知道“订阅”属性上有很多问题在'void‘类型中不存在,但它们似乎都是通过输入“返回”请求来解决的;我尝试了这个解决方案,但是它不起作用。

EN

回答 1

Stack Overflow用户

发布于 2022-10-10 16:17:05

这可能是因为您的服务函数不返回可观察到的。您需要从updateContract返回可观察到的:

代码语言:javascript
复制
updateContact(contactId:number, updateBody:any): Observable<Contract>{
    const endpoint='http://localhost:3000/contacts/'+contactId;
    return this.httpClient.put<Contract>(endpoint,updateBody);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74017727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档