我已经在谷歌上找到了答案,但找不到解决方法。
一段时间以来,我一直在使用这样的代码。 http是有角的HttpClient。
forgotPassword(email: string): Observable<ApiReturn> {
const url = `${this.apiURL}/ForgotPassword`;
const params = {
email
};
return this.http
.post<ApiReturn>(url, params, this.requestOptions)
.pipe(catchError(e => this.handleError(e)));
}
我更新到了最新的Angular 6.x版本和RxJS 6(从5.5开始)。现在,代码在抱怨catchError:
“ OperatorFunction”类型的参数不能分配给“ OperatorFunction”类型的参数。 参数“源”和“源”的类型不兼容。 不能将“可观察”类型分配给“可观察”类型。
我的HttpInterceptor现在也无法编译。
import { Injectable } from '@angular/core';
import {
HttpEvent,
HttpInterceptor,
HttpHandler,
HttpRequest,
HttpResponse
} from '@angular/common/http';
import { Log, Level } from 'ng2-logger/client';
import { Observable } from 'rxjs';
import { map, tap } from 'rxjs/operators';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor() {
}
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
// Get the auth header from the service.
// const authHeader = this.global.authenticationToken;
// Clone the request to add the new header.
const authReq = req.clone({
headers: req.headers
.set('Access-Control-Allow-Origin', window.location.href)
});
// Pass on the cloned request instead of the original request.
return next.handle(authReq);
}
}
错误:[ts]类型 'import(“ c:/ ProjDotNet / collegebowl-site / node_modules / @ angular / core / node_modules / rxjs / internal / Observable”)。可观察>> 不可分配给类型 'import(“ c:/ ProjDotNet / collegebowl-site / node_modules / rxjs / internal / Observable”)。可观察>。 财产类型' 源”不兼容。
基本上是相同的问题。
我收集到了管道功能中缺少的一些基本知识,但是我无法弄清楚或者找不到一个正在做我正在做的例子。任何帮助将不胜感激。
答案 0 :(得分:4)
更仔细地查看错误消息。它说
bin
和
JAVA_HOME
是不同的类型。也就是说,实际上您有两种不同的Observable,它们分别来自RxJS的不同副本,这些副本位于文件系统的不同目录中。
也就是说,您的node_modules处于非常奇怪的状态。运行import("c:/ProjDotNet/collegebowl-site/node_modules/@angular/core/node_modules/rxjs/internal/Observable").Observable>
或import("c:/ProjDotNet/collegebowl-site/node_modules/rxjs/internal/Observable").Observable>
可能会提示为什么npm / yarn认为两次安装RxJS是个好主意。
答案 1 :(得分:0)
就像@meriton所说,这是因为在多个node_modules中有多个rxjs实例。 我发现最好的解决方案是在tsconfig.json中添加一个别名,以强制在各处使用相同的rxjs:
=ARRAYFORMULA({indirect("'"&WeekINTERMEDIATE!EE3&"'"&"!A:BA"),indirect("'"&WeekINTERMEDIATE!EE4&"'"&"!A:BA"}))