[英]Class 'AuthGaurd' incorrectly implements interface CanActivate
I am beginner and learning Angular From tutorials as i follow those tutorials and when i implement interface CanAcivate
as he did in tutorial its show error 我是初学者并且学习Angular From教程,因为我遵循这些教程,当我实现接口CanAcivate
就像他在教程中所做的那样显示错误
Class 'AuthGaurd' incorrectly implements interface 'CanActivate'. 类'AuthGaurd'错误地实现了接口'CanActivate'。 Property 'canActivate' is missing in type 'AuthGaurd' but required in type 'CanActivate'.ts(2420) 'AuthGaurd'类型中缺少属性'canActivate',但在'CanActivate'.ts(2420)类型中需要
Here is implementation of Canactivate 这是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;
});
}
}`
And here is Imports 这是进口
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';
I change Import from import { CanActivate } from '@angular/router/src/utils/preactivation';
我import { CanActivate } from '@angular/router/src/utils/preactivation';
更改导入import { CanActivate } from '@angular/router/src/utils/preactivation';
to import { CanActivate } from '@angular/router; But not work
import { CanActivate } from '@angular/router; But not work
import { CanActivate } from '@angular/router; But not work
Also I add following in canActivate as i watch one answer on StackOverflow but it also not work for me 另外我在canActivate中添加以下内容,因为我在StackOverflow上观看了一个答案,但它也不适用于我
CanActivate(next: ActivatedRouteSnapshot,
state: ActivatedRouteSnapshot): Observable<boolean>
注意canActivate
函数的camel情况,并使用必要的参数来实现该函数。
your method should be canActivate() and it should return Observable<boolean> | boolean
你的方法应该是canActivate() ,它应该返回Observable<boolean> | boolean
Observable<boolean> | boolean
: 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;
});
}
You should return a boolean from the canActivate
method. 您应该从canActivate
方法返回一个布尔值。 There's a spelling mistake in your method. 您的方法中存在拼写错误。 it should be canActivate
instead of CanActivate
. 它应该是canActivate
而不是CanActivate
。 CanActivate
is a interface name where as canActivate
is the method name 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;
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.