角度错误:[object Object] resolvePromise
发布时间:2020-12-17 17:37:19 所属栏目:安全 来源:网络整理
导读:我正在使用Angular 7并使用observable调用简单服务 import { Injectable } from '@angular/core';import { Http,Headers} from '@angular/http';import { Observable } from 'rxjs';@Injectable({ providedIn: 'root'})export class AuthService { construct
我正在使用Angular 7并使用observable调用简单服务
import { Injectable } from '@angular/core'; import { Http,Headers} from '@angular/http'; import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class AuthService { constructor(private http:Http) { } registerUser(user):Observable<any>{ let headers = new Headers(); headers.append('Content-Type','application/json'); return this.http.post('http://localhost:8888/users/register',user,{headers:headers}); } } 虽然编译代码是好的,但当它命中注册url和组件然后它给出错误 ERROR Error: "[object Object]" resolvePromise http://localhost:4200/polyfills.js:3159:31 resolvePromise http://localhost:4200/polyfills.js:3116:17 scheduleResolveOrReject http://localhost:4200/polyfills.js:3218:17 invokeTask http://localhost:4200/polyfills.js:2766:17 onInvokeTask http://localhost:4200/vendor.js:72221:24 invokeTask http://localhost:4200/polyfills.js:2765:17 runTask http://localhost:4200/polyfills.js:2533:28 drainMicroTaskQueue http://localhost:4200/polyfills.js:2940:25 vendor.js:70671:5 defaultErrorLogger http://localhost:4200/vendor.js:70671:5 ./node_modules/@angular/core/fesm5/core.js/ErrorHandler.prototype.handleError http://localhost:4200/vendor.js:70719:9 next http://localhost:4200/vendor.js:72698:111 ./node_modules/@angular/core/fesm5/core.js/EventEmitter.prototype.subscribe/schedulerFn< http://localhost:4200/vendor.js:68245:36 ./node_modules/rxjs/_esm5/internal/Subscriber.js/SafeSubscriber.prototype.__tryOrUnsub http://localhost:4200/vendor.js:141501:13 ./node_modules/rxjs/_esm5/internal/Subscriber.js/SafeSubscriber.prototype.next http://localhost:4200/vendor.js:141439:17 ./node_modules/rxjs/_esm5/internal/Subscriber.js/Subscriber.prototype._next http://localhost:4200/vendor.js:141382:9 ./node_modules/rxjs/_esm5/internal/Subscriber.js/Subscriber.prototype.next http://localhost:4200/vendor.js:141359:13 ./node_modules/rxjs/_esm5/internal/Subject.js/Subject.prototype.next http://localhost:4200/vendor.js:141124:25 ./node_modules/@angular/core/fesm5/core.js/EventEmitter.prototype.emit http://localhost:4200/vendor.js:68229:54 onHandleError/< http://localhost:4200/vendor.js:72252:57 ./node_modules/zone.js/dist/zone.js/</ZoneDelegate.prototype.invoke zone.js:388 ./node_modules/zone.js/dist/zone.js/</Zone.prototype.run zone.js:138 ./node_modules/@angular/core/fesm5/core.js/NgZone.prototype.runOutsideAngular http://localhost:4200/vendor.js:72189:16 onHandleError http://localhost:4200/vendor.js:72252:13 ./node_modules/zone.js/dist/zone.js/</ZoneDelegate.prototype.handleError zone.js:392 ./node_modules/zone.js/dist/zone.js/</Zone.prototype.runGuarded zone.js:154 _loop_1 zone.js:677 ./node_modules/zone.js/dist/zone.js/</</api.microtaskDrainDone zone.js:686 drainMicroTaskQueu e zone.js:602 如果我从’../../services/auth.service’中删除组件// import {AuthService}中的服务类;然后代码运行没有错误. 解决方法
自Angular 5以来,Http的使用已被弃用.因此它不会在Angular 7中提供.
你应该使用HttpClient而不是Http.此外,默认情况下会添加Content-Type标头.所以你不需要明确地添加它. 最后,http.post已经返回一个Observable.所以你不需要把它包装成一个 import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class AuthService { constructor(private http: HttpClient) {} registerUser(user): Observable <any> { return this.http.post('http://localhost:8888/users/register',user); } } 您还必须将HttpClientModule添加到AppModule的imports数组中: import { HttpClientModule } from '@angular/common/http'; @NgModule({ ...,imports: [...,HttpClientModule,...] ... }) 然后在你的组件中: constructor(private authService: AuthService) {} ... const user = ... this.authService.registerUser(user) .subscribe(response => console.log(response)); ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |