使用Angular和AngularFire2(Firebase软件包),并尝试使用防护来防止除一个用户以外的所有用户访问特定路由 . 但是下面的代码不起作用 . 我收到错误:
Class'AuthGuard'错误地实现了接口'CanActivate' . 类型'void'不能赋值为'boolean |可观察的|诺言' .
import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private af: AngularFire) { }
canActivate() {
this.af.auth.subscribe(auth => {
if (auth.uid === 'xyz123') {
return Observable.of(true);
} else {
return Observable.of(false);
}
})
}
}
1 回答
路由器需要
boolean
或Observable<boolean>
,但如果您调用subscribe
canActivate
将返回Subscription
. 如果使用map
,则返回值为Observable
.