类型 'typeof AuthGuard' 的参数不可分配



我一直在努力寻找这个问题的解决方案,即使在Stackoverflow上,一个多星期后,我放弃了。请帮忙。

我在auth.guard.ts上收到此错误****强文本

src/app/services/auth.guard.ts(5,2( 中的错误:错误 TS2345:类型"类型"的参数 AuthGuard" 不可分配给类型为 '({ 提供:类型 |"根";} & ValueSansProvider( |({ 提供在: 类型 |"根";} & StaticClassSansProvider( |({ 提供在: 类型 |"根";} & ConstructorSansProvider( |({ ...; } & ExistingSansProvider( |({ ...; } & FactorySansProvider( |({ ...; } & ClassSansProvider('. 类型"类型AuthGuard"不能分配给类型"{ 提供在:类型 |"根";} & ClassSansProvider'. 类型"类型AuthGuard"不能分配给类型"{ 提供在:类型 |"根";}'. 属性"提供"在类型"AuthGuard"中丢失。 src/app/services/bike.service.ts(22,13(:错误 TS2554:预期有 1-2 个参数,但得到 3。

**My AppRoutingModule:**
import { NgModule, Component } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AdminComponent } from './components/admin/admin.component';
import { HomeComponent } from './components/home/home.component';
import { ViewRegistrationComponent } from './components/view-registration/view-registration.component';
import { CallbackComponent } from './components/callback/callback.component';
import { AuthGuard } from './services/auth.guard';
const routes: Routes = [
{
path: '',
component: HomeComponent
},
{
path: 'admin/view/:id',
component: ViewRegistrationComponent,
canActivate: [AuthGuard]
},
{
path: 'admin',
component: AdminComponent,
canActivate: [AuthGuard]
},
{
path: 'callback',
component: CallbackComponent
}
];
...
**My authGard.ts**
import { CanActivate } from '@angular/router';
import { Injectable } from '@angular/core';
import { AuthService } from './auth.service';
@Injectable
export class AuthGuard implements CanActivate {
constructor(public authService: AuthService) {
}
canActivate() {
if (this.authService.isAuthenticated) {
return true;
} else {
this.authService.login();
}
}
}

bikeService.ts
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
const httpOptions = {
headers: new HttpHeaders({'Content-Type': 'application/json'})
};
@Injectable()
export class BikeService {
constructor(private http: HttpClient) { }
getBikes() {
const token = localStorage.getItem('access_token');
return this.http.get('/server/api/v1/bikes',
{headers: new HttpHeaders().set('Authorization', 'Bearer' + token)});
}
getBike(id: number) {
const token = localStorage.getItem('access_token');
return this.http.get('/server/api/v1/bikes', + id,
{headers: new HttpHeaders().set('Authorization', 'Bearer' + token)});
}
createBikeRegistration(bike) {
const body = JSON.stringify(bike);
return this.http.post('/server/api/v1/bikes/save', body, httpOptions);
}
}

看起来您可能忘记了 authGuard.ts 中@Injectable后的括号。

试试@Injectable().

最新更新