angular - 错误类型错误:this._http.request(...).share 不是函数
问题描述
当我尝试授权时,我收到此错误:
错误类型错误:this._http.request(...).share 不是函数
在 AuthService.request (auth.service.ts:569)
在 AuthService.post (auth.service.ts:502)
在 AuthService.signIn (auth.service.ts:166)
在 SignInComponent.signIn (sign-in.component.ts:35)
在 Object.eval [作为 handleEvent] (SignInComponent.html:24)
在句柄事件(core.js:13547)
在 callWithDebugContext (core.js:15056)
在 Object.debugHandleEvent [as handleEvent] (core.js:14643)
在 dispatchEvent (core.js:9962)
在评估(core.js:10587)
我只是找不到她在哪里,请谁能帮忙。使用了两个路由和两个模块。
这是一些文件的列表。如果你需要扔别的东西,写。尽管这里的想法是所有可能出现错误的列表。
app.module.ts:
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { NgModule } from '@angular/core';
import { HttpModule } from '@angular/http';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { ToastModule, ToastOptions } from "ng2-toastr";
import { ToastCustomOptions } from "./shared/toast-cutom-options";
import { AppComponent } from './app.component';
import { routing } from './routings/routing.module';
import { SignInModule } from './layout/sign-in/sign-in.module';
import { LayoutModule } from './layout/layout.module';
import { User } from "./models/user.model";
import { AuthGuard } from './shared/guards/auth.guard';
import { AuthService } from './services/auth/auth.service';
import { environment } from "../environments/environment";
declare let moment: any;
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserAnimationsModule,
BrowserModule,
RouterModule,
FormsModule,
HttpModule,
SignInModule,
ReactiveFormsModule,
LayoutModule,
routing,
ToastModule.forRoot()
],
providers: [AuthService, AuthGuard, {provide: ToastOptions, useClass: ToastCustomOptions} ],
bootstrap: [AppComponent]
})
export class AppModule {
constructor(public authService: AuthService) {
moment.locale('ru');
this.authService.init({
apiPath: environment.apiUrl,
signInRedirect: 'sign_in',
signInPath: '/sign_in',
validateTokenFailedRedirect: 'sign_in',
signOutFailedValidate: true,
dataStorage: localStorage,
userDataClass: User
});
}
}
router.module.ts:
import { Routes, RouterModule } from '@angular/router';
import { ModuleWithProviders } from '@angular/core';
import { LayoutComponent} from '../layout/layout.component';
import { SignInComponent } from '../layout/sign-in/sign-in.component';
import { NotFoundComponent } from '../layout/not-found/not-found.component';
import { AuthGuard } from '../shared/guards/auth.guard';
export const routes: Routes = [
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
{ path: 'sign_in', component: SignInComponent },
{ path: 'dashboard', component: LayoutComponent },
{ path: 'not_found', component: NotFoundComponent },
{ path: '**', component: NotFoundComponent }
];
export const routing: ModuleWithProviders = RouterModule.forRoot(routes, { useHash: true });
解决方案
让 response = this._http.request(new Request(baseRequestOptions)).share();
baseRequestOptions 应该是对象类型。
从您的代码中不清楚它是否是一个对象。检查 typeof(baseRequestOptions) 如果它不是对象然后修改你的代码。
示例代码:
constructor(public http:Http) {}
request(url:string) {
return this.http.request(new Request({
method: RequestMethod.Get,
url: url,
search: 'password=123'
})).share();
}
推荐阅读
- intellij-idea - 如何在 Intellij 中禁用 TestNG
- android - HttpLoggingInterceptor 不记录
- excel - 如何修复以下代码中未找到的对象
- javascript - 如何使用“exec”url 而不是“dev”url 从 Google Apps 脚本创建 webhook。执行返回 403 错误
- groovy - 根据最高的排序字符串
- python - 在迭代列表时使用 Python 更新最小值和最大值
- python - 如何在Flask webapp中拆分子进程的输出行
- ios - 如何在 TabBarController 中重用系统图标?
- javascript - 如何从 php 脚本中获取响应文本?
- html - 图像类型 webp。浏览器加载两种格式