首页 > 解决方案 > 错误类型错误: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 });

标签: angular

解决方案


让 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();
}

推荐阅读