Class 'AuthGaurd' 错误地实现了接口 CanActivate
Class 'AuthGaurd' incorrectly implements interface CanActivate
我是初学者,正在学习 Angular 从教程中学习,因为我遵循这些教程,当我实现界面时 CanAcivate
就像他在教程中所做的那样显示错误
Class 'AuthGaurd' 错误地实现了接口 'CanActivate'。
属性 'canActivate' 在类型 'AuthGaurd' 中缺失,但在类型 'CanActivate'.ts(2420)
中是必需的
这里是 Canactivate 的实现
export class AuthGaurd implements CanActivate
{
constructor(private auth: AuthService, private router: Router) { }
CanActivate(){
return this.auth.user$.map(user => {
if (user) return true;
this.router.navigate(['/login']);
return false;
});
}
}`
这里是进口
import { Injectable } from '@angular/core';
import { AuthService } from './auth.service';
import { CanActivate } from '@angular/router/src/utils/preactivation';
import { Router } from '@angular/router';
import 'rxjs/add/operator/map';
我将导入从 import { CanActivate } from '@angular/router/src/utils/preactivation';
更改为 import { CanActivate } from '@angular/router; But not work
我还在 canActivate 中添加了以下内容,因为我在 Whosebug 上看到了一个答案,但它对我也不起作用
CanActivate(next: ActivatedRouteSnapshot,
state: ActivatedRouteSnapshot): Observable<boolean>
您应该 return 来自 canActivate
方法的布尔值。您的方法中存在拼写错误。它应该是 canActivate
而不是 CanActivate
。 CanActivate
是接口名称,其中 canActivate
是方法名称
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot,
RouterStateSnapshot, Router, CanActivateChild } from '@angular/router';
export class AuthGaurd implements CanActivate
{
constructor(private auth: AuthService, private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
this.auth.user$.map(user => {
if (user) return true ;
this.router.navigate(['/login']);
return false;
});
}
}
注意canActivate
函数的驼峰式大小写,使用必要的参数实现函数。
你的方法应该是 canActivate() 并且它应该 return Observable<boolean> | boolean
:
import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from "@angular/router";
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
this.auth.user$.map(user => {
if (user) return true;
this.router.navigate(['/login']);
return false;
});
}
我是初学者,正在学习 Angular 从教程中学习,因为我遵循这些教程,当我实现界面时 CanAcivate
就像他在教程中所做的那样显示错误
Class 'AuthGaurd' 错误地实现了接口 'CanActivate'。 属性 'canActivate' 在类型 'AuthGaurd' 中缺失,但在类型 'CanActivate'.ts(2420)
中是必需的这里是 Canactivate 的实现
export class AuthGaurd implements CanActivate
{
constructor(private auth: AuthService, private router: Router) { }
CanActivate(){
return this.auth.user$.map(user => {
if (user) return true;
this.router.navigate(['/login']);
return false;
});
}
}`
这里是进口
import { Injectable } from '@angular/core';
import { AuthService } from './auth.service';
import { CanActivate } from '@angular/router/src/utils/preactivation';
import { Router } from '@angular/router';
import 'rxjs/add/operator/map';
我将导入从 import { CanActivate } from '@angular/router/src/utils/preactivation';
更改为 import { CanActivate } from '@angular/router; But not work
我还在 canActivate 中添加了以下内容,因为我在 Whosebug 上看到了一个答案,但它对我也不起作用
CanActivate(next: ActivatedRouteSnapshot,
state: ActivatedRouteSnapshot): Observable<boolean>
您应该 return 来自 canActivate
方法的布尔值。您的方法中存在拼写错误。它应该是 canActivate
而不是 CanActivate
。 CanActivate
是接口名称,其中 canActivate
是方法名称
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot,
RouterStateSnapshot, Router, CanActivateChild } from '@angular/router';
export class AuthGaurd implements CanActivate
{
constructor(private auth: AuthService, private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
this.auth.user$.map(user => {
if (user) return true ;
this.router.navigate(['/login']);
return false;
});
}
}
注意canActivate
函数的驼峰式大小写,使用必要的参数实现函数。
你的方法应该是 canActivate() 并且它应该 return Observable<boolean> | boolean
:
import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from "@angular/router";
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
this.auth.user$.map(user => {
if (user) return true;
this.router.navigate(['/login']);
return false;
});
}